私はNetbeans 8.2を使ってSpringアプリケーションを開発しています。私が問題を抱えているこの特定のアプリはSpring Boot 1.5.3アプリです。私はバネXMLファイルと、ルートプロジェクトディレクトリの/ configに保存するapplication.propertiesを持っています。Springブートはコマンドライン実行からクラスパスにファイルを追加します
@ImportResource
注釈と@ImportResource(value="${config.xmlfile}")
のような値プロパティを使用して、spring xmlファイルをプロジェクトに渡します。
Netbeansの[プロジェクトの実行]ボタンをクリックすると、Springアプリケーションが起動し、application.propertiesファイルがmy/configフォルダに正しく検索されます。ただし、そのフォルダ内の他のファイルへのクラスパス参照は失われます。たとえば、config.xmlファイルをclasspath:config/file.xml
またはclasspath:file.xml
に設定すると、ファイルを見つけることができませんが、file:config/file.xml
が機能します。
、私は私の構造として、次のしている、コマンドラインから実行するとき:
app/
|-- bin
| `-- app-run.sh
|-- config
| |-- application.properties
| |-- log4j2.xml
| |-- file.xml
`-- app-exec.jar
私は次のようにjarファイルを作るためにspring-boot-maven-plugin
を使用しています:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
と私のAPP- run.shスクリプトは次を実行します。
exec /bin/java -cp :.:../config/*:../app-exec.jar
-Dlogging.config=../config/log4j2.xml
-Dspring.config.location=../config/application.properties
-jar ../app-exec.jar
ここで、/ bin/java repres私はJavaがインストールされている場所を指定します。 -cpで設定されたクラスパスはここでは動作していないようです。 IDEを実行する場合と同様に、config.xmlファイルをclasspath:config/file.xmlまたはclasspath:file.xmlに設定すると、ファイルは見つかりませんが、file:../config/file.xmlが機能します。
IDEとコマンドラインの両方でクラスパスを設定して、クラスパス参照を使用してSpring内のファイルにアクセスできるようにしたいと考えています。私はそれらをすべてsrc/main/resources
に入れて、パッケージ化とデプロイメントの後で編集する必要があるので、それらをjarファイルにパッケージングすることは望ましくありません。
誰にでもアイデアやヒントがありますか?前もって感謝します!
詳細なメモをありがとう。コマンドの-Dloader.pathの場所を変更した後で動作します。 – Silentbang
@Silentbangこの回答がうまくいけば、私は物事を把握するのに少し時間がかかりました。 Springからのこのトピックのドキュメントはうまくいきましたが、 '-Dloader.path'に渡すときにパスを指定する方法のように、いくつかの場所で規約が破られました – wrslatz