我有几个项目,指向不同的内部存储库。一个项目的用户可能无法在另一个项目上看到存储库,因此我需要每个项目的特定项目settings.xml
。
创建特定项目的Maven设置表明我可以通过使用
创建MVN_ROOT/.mvn/maven.config
来做到这一点- 设置./。mvn/settings.xml
然后将存储库信息放入MVN_ROOT/.mvn/settings.xml
中。
似乎可以使用,我可以将这些文件添加到git,其他用户可以自动使用存储库。
但是,存储库需要验证,这需要settings.xml
包含
...
<server>
<id>repo-proj-1</id>
<username>me</username>
<password>secret</password>
</server>
<server>
<id>repo-proj-2</id>
<username>my.name</username>
<password>secure</password>
</server>
...
显然,我不想将此信息放入GIT存储库中。~/.m2/settings.xml
是提供该信息的显而易见的地方。但是,看来我只能有一个用户设置文件,因为当我尝试构建时,我的登录信息不会访问。
是否有一种使用两个设置文件的方法?
这需要在Mac,Linux和Windows上使用,因此<xs:include>~/.m2/settings.xml</xs:include>
(XML include,可能不是正确的语法)之类的东西无法正常工作,因为~/.m2
通常不是Windows上正确的位置。
我们使用的是Maven 3,如果需要特定的最近版本,我们可以要求用户升级到该版本。
将这些秘密视为环境变量的方法是什么?
<server>
<id>repo-proj-2</id>
<username>${user}</username>
<password>${pass}</password>
</server>
您可以通过构建工具设置它们:
mvn -s ./build/settings.xml -Duser=xxx -Dpass=xxx clean install
应该有一个中央存储库,其中包含快照和另一个包含发行版和组中的组中的一个存储库,将它们组合为消费。应在位于用户主目录中的settings.xml
或CI服务器的配置中配置。
部署到存储库只能由开发人员永远不会由CI服务器完成。
在CI服务器中,您应该正确设置由CI服务器托管的凭据(Jenkins:凭据商店)等。
如果您需要通过项目单独的settings.xml
,则是设置中的设计问题,并且会引起许多问题。
不同项目的分离是Maven存储库中的一件基本事物,称为坐标,该坐标是GroupId和Artifactid Plus版本的组合。
一般而言,settings.xml
应仅位于用户主目录中,该目录在需要时包含用户凭据(如前所述,与加密结合在一起)。