Maven:如何找到父母pom?

时间:2013-07-15 09:49:54

标签: maven

我正在学习maven并建立构建环境。有一点我无法弄清楚,如何设置一个项目,以便找到一个公司范围的父pom。我希望这可以工作:

$ git clone some_project
$ cd some_project
$ mvn install some_project

some_project/pom.xml应该引用公司范围的pom,它可以从公司maven存储库中获取。但是,我在哪里指定公司存储库?

将它放在some_project/pom.xml中可能会这样做,但是在许多项目中该位置是硬编码的,如果服务器位置发生变化,这可能会导致一些麻烦。

将它放在settings.xml中可以起作用我想但是会打破上述要求。

修改

感谢您的回答。我将使用settings.xml解决方案,尽管它不允许上述命令序列。似乎没有解决方案不需要某种初始手动设置,并且建议的解决方案settings.xml对我来说是最简单的。因此我无法决定接受哪两个答案。两者都同样好。

以下是我提出的settings.xml部分:

...
<profiles>
    <profile>
        <activation>
            <property>
                <name>!skip</name>
            </property>
        </activation>

        <repositories>
            <repository>
                <id>internalrepo</id>
                <name>Central Internal Maven Repository</name>
                <url>http://server.company.example.com/mvnrepo</url>
            </repository>
        </repositories>

    </profile>
</profiles>
...

2 个答案:

答案 0 :(得分:3)

我建议把它放在settings.xml中。

如果您的公司运行自己的maven repo,那么在settings.xml中配置它是有意义的 - 尤其是您可能需要添加访问凭据等内容,当然这应该从不出现在(共享)项目pom中。唯一的缺点是每个用户在首次安装他们的maven客户端时都必须跳过一个额外的(一次性)箍。

另一种方法是最初不从公司maven repo实际获取根pom,而是直接从git将其安装到本地repo中。如果你的root pom本身就是一个maven项目(这并不罕见)并且在git中可用,只需克隆它并运行mvn install

答案 1 :(得分:1)

将公司存储库URL放在settings.xml中被认为是一种很好的做法。您还可以拥有存储库上载所需的关联用户名/密码。

如果您关心存储库重定位,您必须依赖良好的DNS选择(repository.mycompany.com通常很好)并且很好地使用Web服务器重写规则。

相关问题