2013-02-19 119 views
4

我正在嘗試爲使用maven構建自動化解決方案。我的願景是有一個Maven構建,它從我的項目創建JAR文件,然後將所有依賴項作爲JAR複製到「目標」文件夾中的某個子目錄。如何爲具有外部依賴關係的Java項目配置Maven構建?

我不想使用Shade或Assembly(所以我不想提取其他JAR的內容並將它包含在一個「super-JAR」中,因爲項目更復雜,並且當我包括一個文件中的所有JAR)。

我該怎麼做這樣的構建POM?

+0

所有的依賴複製到目標/ lib目錄當你做一個Maven構建。 – 2013-02-19 13:00:28

+0

@AjayGeorge很大程度上取決於''.. OP聲明他構建了一個JAR,因此他的'target/lib'中沒有任何內容。 @Miroslav我很好奇你爲什麼不想使用程序集插件? – 2013-02-19 13:12:06

+0

@ AndersR.Bystrup你的意思是建立一個單一的superjar文件?這將是最好的,但我一直在努力處理被覆蓋/跳過的文件(目前爲止,該項目有68個外部JARs) - 即使Shade沒有幫助...所以我最終得到了一個搞砸的JAR文件正確地開始...正如我在我接受的答案下面的評論中所說的,我正在努力應對Maven配置。 – 2013-02-19 13:16:01

回答

7

我在這裏沒有看到任何問題。只需創建與<packaging>jar</packaging> maven pom.xml默認情況下,它不應該打包到你的jar所有依賴庫。

<plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
    <execution> 
     <phase>install</phase> 
     <goals> 
     <goal>copy-dependencies</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${project.build.directory}/lib</outputDirectory> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

沒有問題,我只是失敗(很長一段時間),以抓住Maven配置和我沒有時間正確研究它,因爲其他工作。 :-(謝謝,這基本上就是答案,現在我只需要弄清楚如何在同一步驟中添加清單,但是我認爲我可以處理這個問題,謝謝! – 2013-02-19 13:09:05

+2

對於初學者來說最有價值的提示我可以提供建議 - 嘗試'mvn archetype:generate'。在那裏你可以爲不同類型的項目準備好maven的設置 – 2013-02-19 13:14:26

0

您可以使用maven組件,插件創建從您的目錄中選擇的其他文件的.zip文件。我使用這種方法爲項目創建分發zip文件。 maven-assembly-plugin documentation中有幾個示例。

+0

謝謝你的回答,但不是這樣。Assembly插件是創建分發包的最後一步。但是我只需要首先將依賴關係收集到一個目錄中 – 2013-02-19 13:12:38

2

與最新的評論相關,使用這個插件添加主類的清單:

 <plugin> 
      <!-- Build an executable JAR --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>lib/</classpathPrefix> 
         <mainClass>com.test.YourMainClass</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
+2

謝謝,我已經明白了,並且,由於java -jar以某種方式覆蓋(?)java -cp,我最終使用了java -cp「project-jarfile .jar; lib/*「mainClass無論如何。 – 2013-02-19 14:03:21

相關問題