[英]Maven : Distributing maven jar
我有一個從Maven項目創建的sample.jar
,它具有所需的所有依賴項(使用maven程序集插件的胖jar)。 我通過使用mvn install:install-file
在客戶端應用程序中使用此jar,並將依賴項包含在客戶端應用程序的pom.xml中。 這可行。
但是有沒有一種方法可以使我不必將sample.jar
構造為胖罐?
相反,如果所有sample.jar
的依賴項都可以從Maven中央存儲庫中獲得,則讓客戶端應用程序的pom通過讀取sample.jar's pom.xml
解析sample.jar
所需的依賴項?
我的Maven程序集插件。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>myMainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
在您選擇的存儲庫(中央,專有Artifactory等)中,您需要同時上傳pom和(薄)jar。
當在客戶端項目中聲明依賴項時,Maven將自動查找兩者。 它將使用pom來確定可傳遞依賴項並將針對jar進行編譯。
這里有幾件事要注意。
maven-assembly-plugin
會在它創建的瘦(常規)jar文件旁邊創建一個附加文件。 您可以通過查看項目的target
文件夾來檢查是否是這種情況。 maven-assembly-plugin
還將創建任何人為因素,從而創建項目人為因素。 運行mvn install
所有項目工件都將安裝在本地Maven存儲庫中。 這意味着您在本地Maven存儲庫中可能已經既有胖子又有胖子了。 mvn dependency:tree
來檢查是否是這種情況。 請檢查此答案 。 值得一提的是,如果您使用jar的精簡版,則mvn install
命令中的generatePom
或pomFile
選項對於Maven能夠解析傳遞依賴關系至關重要。 另外,您也可以將薄罐子上傳到人工制品中,如果可能的話,也應該這樣做。
有用的參考資料:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.