Maven 中不同配置文件的不同 SCM

Different SCM for different profiles in Maven

在我的项目中,我们必须使用 maben-build-number 插件来构造 jar 的最终名称,为此我们使用 SCN 的修订版,因此我们需要 SCM

但是我们在无法直接访问的受控环境和本地测试环境中有两个 SVN,因此对于我们的 pouproses 我们必须使用:

<scm>
    <connection>scm:svn:http://dev.com/svn_repo/trunk</connection>
    <developerConnection>scm:svn:https://dev.com/svn_repo/trunk</developerConnection>
    <url>http://dev.com/view.cvs</url>
</scm>

但对于客户端环境:

      <scm>
        <connection>scm:svn:http://client.com/svn_repo/trunk</connection>
        <developerConnection>scm:svn:https://client.com/svn_repo/trunk</developerConnection>
        <url>http://client.com/view.cvs</url>
      </scm>

是否可以在不同的配置文件中进行配置。我试过了

<profiles>
  <profile>
    <id>local</id>
    <scm>
        <connection>scm:svn:http://client.com/svn_repo/trunk</connection>
        <developerConnection>scm:svn:https://client.com/svn_repo/trunk</developerConnection>
        <url>http://client.com/view.cvs</url>
      </scm>
  </profile>
  <profile>
    <id>remote</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <scm>
        <connection>scm:svn:http://client.com/svn_repo/trunk</connection>
        <developerConnection>scm:svn:https://client.com/svn_repo/trunk</developerConnection>
        <url>http://client.com/view.cvs</url>
      </scm>
  </profile>
</profiles>

但是当我使用配置文件 -Plocal 时,没有任何反应?

我通过为 SCM 连接详细信息创建 属性 解决了这个问题,我需要为不同的配置文件更改。这是我所做的总结。

定义了 属性 并且它是属性块的默认值。

<properties>
    <developerConnectionUrl><!-- developerConnection url here --></developerConnectionUrl>
</properties>

设置 scm 块属性以使用全局属性。

<scm>
    <developerConnection>${developerConnectionUrl}</developerConnection>
</scm>

创建了一个根据需要更改全局 属性 的配置文件。

<profiles>
    <profile>
        <id>local</id>
        <properties>
            <developerConnectionUrl><!-- developerConnectionUrl url for profile --></developerConnectionUrl>
        </properties>
    </profile>
</profiles>

据我所知,通过快速扫描架构,scm 标记只能在 POM 的顶层使用,在 profile 标记内无效