3

MavenSCM插件似乎没有提供“提交”目标。scm:checkin执行提交和推送。我需要避免推动。

我只是对做一个hg commitduring感兴趣install:install。我没有使用该release插件,也不需要它。我只是在多模块环境中本地工作,并希望确保我的源存储库与每个模块的本地安装的 Maven 快照保持一致。换句话说,每次我安装一个模块的新快照时,我都希望提交给 hg 的相关代码使每个快照直接与 hg 修订版(或在快照之间发生多次提交时的修订版范围)相关。

4

3 回答 3

2

以下将绑定scm:checkininstall阶段。只要存储库是一个file://方案(至少对于 Mercurial,根据代码,在.scm:checkin

  1. 定义以下步骤中使用的属性:

    <properties>
      <message>maven install:install auto-checkin.</message>
      <repository.local>file:///path/to/local/repository</repository.local>
      <repository.type>hg</repository.type>
    </properties>
    

    <message>可以是你选择的任何东西。完全修复并不理想,因为提交应该包含关于所做更改的有意义的消息。但是,我确实相信自动提交中应该包含一条标准消息来识别它。只需<message>在每次安装之前修改步骤 1. 中的属性。

  2. 这只是基于 Maven 项目的标准 scm 节点。由于这仅与本地存储库有关,因此 URL 都是相同的。

    <scm>
      <connection>scm:${repository.type}:${repository.local}</connection>
      <developerConnection>scm:${repository.type}:${repository.local}</developerConnection>
      <url>scm:${repository.type}:${repository.local}</url>
    </scm>
    
  3. install这是在执行提交阶段运行的插件。它会根据步骤 2 中的定义简单地执行正确的 scm checkin。

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>1.2</version>
          <executions>
            <execution>
              <phase>install</phase>
              <goals>
                <goal>checkin</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
    

一个问题是我收到以下内容。

已弃用:将聚合器 mojo 绑定到 POM 中的生命周期阶段被认为是危险的。此功能已被弃用。请相应地调整您的 POM 文件。

我正在研究如何解决它,但现在它可以工作,我正在接受它。

于 2009-12-23T02:14:14.220 回答
0

将 on 设置connectionUrlcheckin本地机器上的一次性存储库怎么样?因此,您的结帐将来自“中央”存储库,但您的“签入”将仅转到工作存储库(您想要的提交),并且(显然)不可避免的推送将转到 file:///tmp/whocares。

或者,在 scm 插件中可能有一行代码可以注释掉以避免这种推送。

于 2009-12-18T19:19:35.503 回答
0

Maven 的 scm 插件似乎没有提供“提交”目标。scm:checkin执行提交和推送。我需要避免推动。

那么 scm 插件可能不是你要找的:)

我只是对在install:install. 我没有使用该release插件,也不需要它。

老实说,这是一个非常奇怪的用法。虽然我理解您所描述的内容,但将 SNAPSHOT 与修订号“同步”对我来说并没有什么意义。即使您不在两个 SNAPSHOT 构建之间提交代码,我也不明白这怎么会是一个问题。换句话说,我看不出强制提交的附加价值是什么。在我看来,使用发布插件不会解决任何问题。

总而言之,我认为 scm 插件不会让你实现你的目标(至少在没有黑客攻击的情况下不会)。我不知道 Ant 中是否有 mercurial 支持,但如果有,也许你应该转向这个方向(并使用 antrun 插件)。

于 2009-12-18T20:46:02.660 回答