如何将工件添加到本地maven存储库,以便它正确引用其自己的依赖项集?

时间:2011-09-08 20:47:27

标签: maven

我正在开发一个依赖于许多遗留JAR文件的应用程序,我希望项目直接从版本控制构建,而其他用户不必在本地存储库中安装这些JAR。我无法将它们添加到公司存储库中,因此我创建了一个本地项目的存储库,并使用maven-install-plugin:install-file将这些JAR添加到该存储库,并在POM文件中设置存储库条目,以便它知道搜索本地存储库。

这完全符合我想要的方式......直到某一点。问题是大多数这些遗留JAR文件都有自己的一组依赖项。我希望他们像其他具有自己的依赖关系的工件一样工作,以便maven可以解决所有问题并包含所有必需的文件,但我找不到使用任何maven-install-plugin执行此操作的方法:install -file选项(或任何其他maven命令/插件)。我对maven很新,所以我可能只是在这一点上无知。

作为解决方法,我尝试进入本地存储库目录并手动编辑工件的POM文件以包含依赖项。这不会导致任何错误,但它也没有引入这些依赖关系。

有人可以给我一些线索吗?

2 个答案:

答案 0 :(得分:1)

在项目特定的存储库中编辑POM文件后,使用Maven存储库管理器(如sonatype nexus)将其作为maven repo托管。将项目nexus repo添加为项目pom.xml中的maven repo之一,如下所示

<repositories>
    <repository>
        <id>my-project-mvn-repo</id>
        <name>my-project-mvn-repo</name>
        <url>http://<your project maven repo URL here></url>
    </repository>
    <repositories>

现在所有开发人员都应该能够进行构建。旧版jar文件POM包含依赖项。 Maven应该自动将依赖的jar放在开发人员的工作区上。

答案 1 :(得分:1)

maven-install-plugin:install-file目标具有pomFile属性。您可以使用它来为旧jar指定POM文件。您将创建一个POM文件,该文件指向<dependencies>部分中artifactId的所有依赖项。如果您有远程nexus存储库,则可以使用存储库的管理屏幕来部署jar。