簡體   English   中英

Maven:分發Maven jar

[英]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進行編譯。

這里有幾件事要注意。

  • 您沒有指定生成胖jar的精確度,但是通常maven-assembly-plugin會在它創建的瘦(常規)jar文件旁邊創建一個附加文件。 您可以通過查看項目的target文件夾來檢查是否是這種情況。
  • 除非另行配置,否則maven-assembly-plugin還將創建任何人為因素,從而創建項目人為因素。 運行mvn install所有項目工件都將安裝在本地Maven存儲庫中。 這意味着您在本地Maven存儲庫中可能已經既有胖子又有胖子了。
  • 假設上述語句在您的特定情況下成立,並且您的客戶項目具有標准的依賴項記錄(沒有特殊類型,限定符...),則很可能已經使用了瘦罐子。 您可以通過在客戶端項目中運行mvn dependency:tree來檢查是否是這種情況。

請檢查此答案 值得一提的是,如果您使用jar的精簡版,則mvn install命令中的generatePompomFile選項對於Maven能夠解析傳遞依賴關系至關重要。 另外,您也可以將薄罐子上傳到人工制品中,如果可能的話,也應該這樣做。

有用的參考資料:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM