2010-09-30 47 views
1

我正在爲我有的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插件這樣的:

+0

「..」或「。」不是有效條目IMO,目錄應在每個清單規範的末尾包含一個斜槓。我認爲這不會解決問題,但我會解決它。 – 2010-09-30 13:38:03

+0

你如何閱讀propertiesfile? – Salandur 2010-09-30 13:55:45

回答

1

我剛剛成功地通過配置的maven-JAR-插件像這樣做的?從你的POM猜測,當你嘗試使用外部配置時,你似乎正在創建一個ZIP,所以archiver插件可能只是拋出你的清單配置。 (因爲ZIP沒有清單。)因此,您需要配置純粹的工件JAR,使其具有適當的類路徑,而不僅僅是組裝的。

相關問題