我正在嘗試爲使用maven構建自動化解決方案。我的願景是有一個Maven構建,它從我的項目創建JAR文件,然後將所有依賴項作爲JAR複製到「目標」文件夾中的某個子目錄。如何爲具有外部依賴關係的Java項目配置Maven構建?
我不想使用Shade或Assembly(所以我不想提取其他JAR的內容並將它包含在一個「super-JAR」中,因爲項目更復雜,並且當我包括一個文件中的所有JAR)。
我該怎麼做這樣的構建POM?
我正在嘗試爲使用maven構建自動化解決方案。我的願景是有一個Maven構建,它從我的項目創建JAR文件,然後將所有依賴項作爲JAR複製到「目標」文件夾中的某個子目錄。如何爲具有外部依賴關係的Java項目配置Maven構建?
我不想使用Shade或Assembly(所以我不想提取其他JAR的內容並將它包含在一個「super-JAR」中,因爲項目更復雜,並且當我包括一個文件中的所有JAR)。
我該怎麼做這樣的構建POM?
我在這裏沒有看到任何問題。只需創建與<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>
沒有問題,我只是失敗(很長一段時間),以抓住Maven配置和我沒有時間正確研究它,因爲其他工作。 :-(謝謝,這基本上就是答案,現在我只需要弄清楚如何在同一步驟中添加清單,但是我認爲我可以處理這個問題,謝謝! – 2013-02-19 13:09:05
對於初學者來說最有價值的提示我可以提供建議 - 嘗試'mvn archetype:generate'。在那裏你可以爲不同類型的項目準備好maven的設置 – 2013-02-19 13:14:26
您可以使用maven組件,插件創建從您的目錄中選擇的其他文件的.zip文件。我使用這種方法爲項目創建分發zip文件。 maven-assembly-plugin documentation中有幾個示例。
謝謝你的回答,但不是這樣。Assembly插件是創建分發包的最後一步。但是我只需要首先將依賴關係收集到一個目錄中 – 2013-02-19 13:12:38
與最新的評論相關,使用這個插件添加主類的清單:
<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>
謝謝,我已經明白了,並且,由於java -jar以某種方式覆蓋(?)java -cp,我最終使用了java -cp「project-jarfile .jar; lib/*「mainClass無論如何。 – 2013-02-19 14:03:21
所有的依賴複製到目標/ lib目錄當你做一個Maven構建。 – 2013-02-19 13:00:28
@AjayGeorge很大程度上取決於''.. OP聲明他構建了一個JAR,因此他的'target/lib'中沒有任何內容。 @Miroslav我很好奇你爲什麼不想使用程序集插件? –
2013-02-19 13:12:06
@ AndersR.Bystrup你的意思是建立一個單一的superjar文件?這將是最好的,但我一直在努力處理被覆蓋/跳過的文件(目前爲止,該項目有68個外部JARs) - 即使Shade沒有幫助...所以我最終得到了一個搞砸的JAR文件正確地開始...正如我在我接受的答案下面的評論中所說的,我正在努力應對Maven配置。 – 2013-02-19 13:16:01