将所有项目依赖项部署到远程存储库

时间:2011-09-08 06:47:21

标签: java maven archiva

我们有一位新的项目朋友,我们希望将项目安装到他的环境中。但是maven存储库中不存在太多依赖项。所以maven变得毫无用处。我们安装了一个archiva服务器来安装我们的工件,但是我们不希望逐个部署所有这些依赖项(不仅是项目jar自身,所有依赖项)。是否有针对这种情况的自动化解决方案?

提前致谢。

1 个答案:

答案 0 :(得分:4)

最初,如果您调整项目 pom.xml 并添加:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>localrepo</outputDirectory>
                        <useRepositoryLayout>true</useRepositoryLayout>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

并运行 mvn package 这应该在 localrepo 目录中创建存储库目录格式的依赖项副本(我尝试使用命令行选项< strong>依赖:复制依赖但它对我不起作用)。现在从 pom.xml 中注释掉上述内容,因为您可能不再需要它了。

我从未使用过Archiva,但我想现在您可以将 localrepo 存储库文件安装到本地Web服务器上,并将Archiva服务器配置为镜像它。

或者,如果您希望为最终用户进行最小的安装(并且分发大小不是问题),您可以在您的发行版中包含此 localrepo 目录,并为maven提供参考通过将以下内容添加到 pom.xml

来实现
<repositories>
    <repository>
        <id>local-repo</id>
        <name>local-repo</name>
        <url>file://${basedir}/localrepo</url>
        <releases>
            <enabled>true</enabled>
            <checksumPolicy>ignore</checksumPolicy>
            <updatePolicy>always</updatePolicy>
        </releases>
    </repository>
</repositories>  

这种本地存储库技术在分发不在公共Maven存储库中的本地和第三方jar文件时非常有用。您始终可以删除公共存储库中的库。

我发现没有什么比我试图解释所有 mvn install:install-file 通常需要安装第三方罐子的人更快地阻止来自Maven的新用户(不过我可能会对Maven充满热情) )。