我正在学习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>
...
答案 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服务器重写规则。