2

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

提前致谢。

4

1 回答 1

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目录中以存储库目录格式创建依赖项的副本(我尝试使用命令行选项来依赖: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 有多热情)。

于 2011-09-08T10:03:18.013 回答