2016-02-18 108 views
0

我正在編寫一個Java應用程序,它使用來自我的服務器上運行的其他第三方應用程序的一些庫。目前,我正在用appassembler-maven-plugin構建我的應用程序。這個插件將我的jar(app和依賴項)複製到lib文件夾中,並在bin目錄中生成一個shellscript。appassembler-maven-plugin將自定義條目添加到類路徑

在此shellscirpt中生成類路徑。此解決方案的工作原理,但我dublicate依賴性罐(按時間在我的應用程序和第三方 - 應用程序編寫應用程序)。我的第三方應用程序的類路徑設置爲像$ THIRDPARTYAPP_CLASSPATH這樣的系統變量。

我想在我的pom.xml中設置依賴項以便提供,以便appassembler不會將它們添加到lib和classpath,並且希望在我的shell腳本中添加systemvar $ THIRDPARTYAPP_CLASSPATH,以便我的應用程序使用jar從已安裝的第三方應用程序。

此刻我正在手動執行此操作(在編譯後編輯shellscript)並且它工作正常。在appassembler-maven-plugin中是否有任何方法將systemvar自動添加到類路徑中?

我在文檔中找不到任何東西,其他有關類似問題的問題都沒有很好的回答。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>appassembler-maven-plugin</artifactId> 
    <version>1.8.1</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>assemble</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <assembleDirectory>${project.build.directory}/appassembler</assembleDirectory> 
     <extraJvmArguments>-Xms512m -Xmx1024m</extraJvmArguments> 
     <generateRepository>true</generateRepository> 
     <repositoryName>lib</repositoryName> 
     <repositoryLayout>flat</repositoryLayout> 
     <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath> 
     <platforms> 
      <platform>unix</platform> 
     </platforms> 
     <programs> 
      <program> 
       <mainClass>${mainClass}</mainClass> 
       <id>app</id> 
      </program> 
     </programs> 
    </configuration> 
</plugin> 
+0

首先,爲什麼要配置默認'assembleDirectory'?你可以配置創建一個' setup-env'',它可以通過'CLASSPATH_PREFIX'定義一個新的classpath部分,它可以解決你的問題。 (順便說一句:爲什麼不使用最新版的appassembler?)... – khmarbaise

+0

謝謝!那正是我所期待的。並感謝有關版本和目錄的提示。 – Daniel

回答

0

您可以配置創建一個<environmentSetupFileName>setup-env</environmentSetupFileName>可以定義通過CLASSPATH_PREFIX新的類路徑一部分應該解決您的問題。

相關問題