我使用Netbeans 8.2開發Spring應用程序。我遇到麻煩的這個特定的應用程序是一個Spring Boot 1.5.3應用程序。我有一個spring xml文件和一個application.properties,它們保存在根項目目錄下的/ config中。Spring Boot將文件從命令行執行添加到類路徑
我通過@ImportResource
註釋和像@ImportResource(value="${config.xmlfile}")
這樣的值屬性將彈簧xml文件傳遞到我的項目。
當我點擊NetBeans中的「運行項目」按鈕時,我的Spring應用程序啓動並正確找到我的/ config文件夾中的application.properties文件。但是,對該文件夾中其他文件的任何類路徑引用都將丟失。例如,將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
我使用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
where/bin/java repres發送我安裝了java的位置。在-cp中設置的類路徑在這裏似乎不起作用。同樣通過IDE中運行時,設置config.xml文件中的類路徑:配置/ file.xml或類路徑:file.xml都無法找到該文件,但文件:../配置/ file.xml作品。
我希望能夠將classpath設置在IDE和命令行,這樣我可以在Spring中使用的類路徑參照使事情更容易訪問文件。我不想將它們都放在src/main/resources
中,並將它們打包在jar中,因爲我需要在打包和部署後對它們進行編輯。
有沒有人有任何想法或有幫助的提示?提前致謝!
感謝您的詳細註釋。它在命令中更改了-Dloader.path的位置之後起作用。 – Silentbang
@Silentbang很高興這個答案幫了我一些忙,弄明白了。 Spring的這個主題領域的文檔很不錯,但在某些地方破壞了慣例,比如在傳遞給'-Dloader.path'時如何指定路徑 – wrslatz