2011-02-28 32 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

相关问题