我有几个项目指向不同的内部存储库。一个项目的用户可能无法看到另一个项目上的存储库,因此我需要为每个项目提供一个特定于项目的settings.xml。
Create project-specific Maven settings表示我可以通过创建一个MVN_ROOT/.mvn/maven.config来完成这个任务
-设置./..mvn/setings.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,可能不是正确的语法)这样的东西就不能工作了,因为~/.m2在Windows上通常不是正确的位置。
我们使用的是Maven 3,如果需要特定的最近版本,我们可以要求用户升级到该版本。
发布于 2019-03-12 16:36:07
如何将秘密作为环境变量来处理呢?
<server>
<id>repo-proj-2</id>
<username>${user}</username>
<password>${pass}</password>
</server>然后,您可以通过构建工具设置它们:
mvn -s ./build/settings.xml -Duser=xxx -Dpass=xxx clean install发布于 2019-03-12 19:33:37
应该有一个包含快照的中央存储库和另一个包含版本的存储库,以及存储库管理器中的一个组,该存储库管理器将它们组合用于消费。这应该在位于用户主目录或CI服务器配置中的settings.xml中进行配置。
部署到存储库应该只由CI服务器完成,而不是由开发人员完成。
在CI服务器中,您应该正确地设置由CI服务器(Jenkins:凭据存储)托管的凭据,等等。
如果您需要按项目单独使用settings.xml,这是您的设置中的一个设计问题.并且会导致许多问题。
不同项目的分离是Maven存储库中的一项基本工作,称为坐标,它是groupId和artifactId +版本的组合。
通常,settings.xml应该只位于用户主目录中,如果需要的话,该目录包含用户凭据(正如前面提到的,结合加密)。
https://stackoverflow.com/questions/55125154
复制相似问题