使用用户设置的maven.xml和特定于项目的设置.xml



我有几个项目,指向不同的内部存储库。一个项目的用户可能无法在另一个项目上看到存储库,因此我需要每个项目的特定项目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应仅位于用户主目录中,该目录在需要时包含用户凭据(如前所述,与加密结合在一起)。

最新更新