我正在爲我有的maven java項目構建可執行jar。它工作的很好,但我有一個問題,我希望我的config目錄能夠在jar外生存,這樣我可以根據需要輕鬆地進行更改。在manifest.mf中設置類路徑以訪問可執行jar外的配置文件
我已經到了這樣的地步,我沒有配置包含的jar被構建,並且config目錄被放置在與jar相同的目錄中。所以一切看起來不錯。
當我運行jar時,雖然找不到config目錄。我的maven程序集插件看起來像這樣。你可以看到我正在添加。 ../config和../config到類路徑中以試圖使其工作。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<archive>
<manifest>
<mainClass>com.mypackage.Start</mainClass>
</manifest>
<manifestEntries>
<Class-Path>./config/ .. . ../config/</Class-Path>
</manifestEntries>
</archive>
<descriptors>
<descriptor>src/main/assembly/buildCombinedJarWithoutConfig.xml</descriptor>
<descriptor>src/main/assembly/buildZipWithCombinedJarAndExternalConfig.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
這導致我的MANIFEST.MF看起來像
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Pete
Build-Jdk: 1.6.0_21
Main-Class: com.mypackage.Start
Class-Path: ./config/ .. . ../config/
它仍然沒有找到,雖然迪爾。
在啓動時讀取java.class.path始終顯示。
ClassPath : LimitsCache-1.0-SNAPSHOT-jar-with-dependencies.jar
是否有可能獲得類路徑上的配置目錄?
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.apache.camel.spring.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>config/</Class-Path>
</manifestEntries>
</archive>
</configuration>
你有沒有嘗試只使用jar插件這樣的:
「..」或「。」不是有效條目IMO,目錄應在每個清單規範的末尾包含一個斜槓。我認爲這不會解決問題,但我會解決它。 – 2010-09-30 13:38:03
你如何閱讀propertiesfile? – Salandur 2010-09-30 13:55:45