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