1

我正在学习 Maven 并建立构建环境。我不知道的一件事是,如何设置一个项目以使其找到公司范围内的父 pom。我希望这个工作:

$ git clone some_project
$ cd some_project
$ mvn install some_project

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

把它放进去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>
...
4

2 回答 2

3

我建议把它放在settings.xml.

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

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

于 2013-07-15T09:59:02.207 回答
1

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

如果您关心存储库重定位,则必须依靠良好的 DNS 选择(repository.mycompany.com通常没问题)和良好使用 Web 服务器重写规则。

于 2013-07-15T09:59:14.257 回答