我们有一个新的项目朋友,我们想将项目安装到他的环境中。但是 maven 存储库中不存在太多依赖项。所以maven变得没用了。我们安装了一个档案服务器来在那里安装我们的工件,但我们不想一个一个地部署所有依赖项(不仅是项目 jar 本身,所有依赖项)。是否有针对这种情况的自动化解决方案?
提前致谢。
最初,如果您调整项目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目录中以存储库目录格式创建依赖项的副本(我尝试使用命令行选项来依赖:copy-dependencies但它对我不起作用)。现在从您的pom.xml中注释掉上面的内容,因为您可能不再需要它了。
我从未使用过 Archiva,但我想此时您可以将localrepo存储库文件安装到本地 Web 服务器上并配置您的 Archiva 服务器以对其进行镜像。
或者,如果您想为您的最终用户进行最少的安装(并且分发大小不是问题),您可以在您的分发中包含这个localrepo目录,并通过将以下内容添加到您的 pom.xml 来为 maven 提供对它的引用。 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 存储库中的自制和第 3 方 jar 文件时非常有用。您始终可以删除公共存储库中的库。
我发现没有什么比我试图解释安装 3rd 方 jars 通常需要的所有mvn install:install-file palaver 更快地阻止新用户使用 Maven(无论我对 Maven 有多热情)。