maven:在pom中指定settings.xml位置

时间:2013-03-05 23:44:23

标签: maven build settings

要求:我们需要对settings.xml的某些部分进行集中控制,例如镜像配置

并且某些部分需要是特定于用户的[例如:凭证]

所以我的想法是将公共settings.xml放在源代码控制下(例如:svn)并配置父pom,以便它可以在位置采用公共settings.xml(例如${user.home}/abc/def/settings.xml

我们需要为某些特定于用户的事物包含用户特定的settings.xml

2 个答案:

答案 0 :(得分:2)

可以将repo设置以及配置文件设置放入parent pom directly,因此您无需考虑那里的settings.xml(尽管似乎不可能镜像配置)。但是,推荐的解决方案是使用像Nexus或Artifactory这样的存储库管理器来控制repo设置,而用户只能指向存储库管理器。这是对配置进行集中控制的方式,而不是settings.xml。

答案 1 :(得分:0)

正式Maven Settings Reference通知我们如下: -

  

settings.xml文件中的settings元素包含用于定义以各种方式配置Maven执行的值的元素,例如pom.xml,但不应捆绑任何特定的项目,或分发给受众。其中包括本地存储库位置,备用远程存储库服务器和 身份验证信息 等值。

以下是有用的更多信息: -

1。Injecting POM Properties via Settings.xml

2。Using Mirrors for Repositories

我总是将settings.xml与POM一起使用,如下例所示: -

的settings.xml

  <properties>
      <svnHost>https://myhost/svn/</svnHost>
      <svnUser>the user id</svnUser>
      <svnPassword>the password</svnPassword>
  </properties>

的pom.xml

<scm>
    <connection>
        scm:svn:${svnHost}/${project.artifactId}/trunk
    </connection>
    <developerConnection>
        scm:svn:${svnHost}/${project.artifactId}/trunk
    </developerConnection>
    <url>...</url>
</scm>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-scm-plugin</artifactId>
    <version>${my.maven.scm.version}</version>
    <configuration>
        <username>${svnUser}</username>
        <password>${svnPassword}</password>
    </configuration>
</plugin>

我希望这可能有所帮助并给你一个想法。