2011-02-28 66 views
6

我必須缺少一些東西。我已經搜查,搜查,並播放和修修補補,我仍然無法弄清楚如何做到與Maven如下:Maven:將神器及其代碼下載到特定目錄

我想下載一個神器以及所有依賴的(和傳遞依賴),從我們的內部Nexus服務器,放入用戶指定的位置。這裏的想法是讓部署該解決方案的人以一種方式讓他們輕鬆地在一個地方獲得他們需要的所有jar文件。

有依賴性:得到,這是接近但不是雪茄。使用依賴關係:get時,所有工件都下載到本地mvn存儲庫中,位於根據每個工件的groupId和artifactId的目錄下。這不是我想要的,因爲那你必須在所有這些目錄周圍跋涉才能看到罐子。我希望將所有文件下載到一個目錄中,以便它們位於同一個位置。

然後存在依賴性:複製依賴性。這又幾乎是我想要的;它會將所有神器的代碼複製到目標/依賴中。這兩個問題是1)你需要有一個pom.xml;你不能像使用依賴關係一樣指定任意的座標:get和2)依賴關係:副本依賴關係不會將主構件本身複製到目標/依賴關係中。

必須有更好的方法來做到這一點,但我無法弄清楚在哪裏尋找解決方案。總而言之,我希望能夠給某人一套maven座標(groupId:artifactId:version)和我們內部的Nexus URL,並讓他們用一個命令將所有內容下載到他們選擇的目錄中。

+0

您可以製作一個項目,將它們用作依賴關係,將它們移入並使用這些罐子創建自己的工件? – corsiKa 2011-02-28 19:04:20

+0

我想是這樣,但那不太對勁。應該有辦法直接下載神器和它的代幣,不是嗎? – Steven 2011-02-28 19:11:23

+0

我完全同意。這看起來不正確。任何人想要的最後一件事情是「直到我們找到更好的方式纔有效」,因爲你會永遠陷在泥濘中。但是,如果一切都失敗...... :) – corsiKa 2011-02-28 21:17:26

回答

0

如果你「想給某人一套maven座標」,最好把它們放在一個特殊的pom.xml中(你必須在任何地方寫下它們)。這個pom不是你的「主神器」的pom,而是「主神器」作爲依賴。包裝類型可以是pom,因爲該項目本身不會創建任何artifcat。

然後使用您已經評估的dependency:copy-dependencies解決方案,您將獲得所需的所有依賴關係。恕我直言,優雅和簡單的解決方案。我不知道更好。

1

使用maven assembly插件將一個附加的「具有依賴關係的jar」打包到一個包含所有內容的ZIP文件中。

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <!-- TODO: a jarjar format would be better --> 
    <id>jar-with-dependencies</id> 
    <formats> 
    <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory> 
     <useProjectArtifact>true</useProjectArtifact> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

然後,用戶可以只要求<type>zip</type>,除了常規的「行家」的座標得到一個zip文件中所有的依賴關係。

+0

+1 - 當我需要分發可執行的桌面應用程序時,我已經使用Assembly插件自己將項目的JAR與它的依賴項打包在一起;所有依賴的JAR必須存在於類路徑中。配置非常簡單,並且具有出色的文檔。 – 2013-02-12 19:17:02

相關問題