Maven 2 如何配置Maven在安装时提交到Mercurial存储库:install

Maven 2 如何配置Maven在安装时提交到Mercurial存储库:install,maven-2,mercurial,maven-plugin,maven-scm,Maven 2,Mercurial,Maven Plugin,Maven Scm,的插件似乎没有提供“提交”目标scm:签入执行提交和推送。我需要避免推 我只是对在install:install期间执行hgcommit感兴趣。我没有使用release插件,也不需要它。我只是在多模块环境中本地工作,希望确保我的源存储库与每个模块的Maven本地安装的快照保持一致。换句话说,每次安装模块的新快照时,我都希望提交给hg的相关代码使每个快照直接与hg版本(或快照之间发生多个提交时的版本范围)关联.如何将签入上的连接URL设置为本地框上的一次性存储库?因此,您的签出将来自“中心”回购协

的插件似乎没有提供“提交”目标<代码>scm:签入执行提交和推送。我需要避免推


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

如何将
签入
上的
连接URL
设置为本地框上的一次性存储库?因此,您的签出将来自“中心”回购协议,但您的“签入”将只进入工作存储库(您想要的提交),并且(显然)不可避免的推送将进入工作存储库file:///tmp/whocares.

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

Maven的scm插件似乎没有提供“提交”目标<代码>scm:签入执行提交和推送。我需要避免推

那么scm插件可能不是您想要的:)

我只是对在
install:install
期间执行hg提交感兴趣。我没有使用
release
插件,也不需要它

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


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

下面将绑定
scm:checkin
安装阶段。只要存储库是一个
文件://
方案(至少对于Mercurial,根据),在
scm:checkin
期间不会执行推送

  • 定义在以下步骤中使用的属性:

    <properties>
      <message>maven install:install auto-checkin.</message>
      <repository.local>file:///path/to/local/repository</repository.local>
      <repository.type>hg</repository.type>
    </properties>
    
  • 一个问题是我收到了以下信息

    不推荐使用:绑定聚合器MOJO 在POM中定义生命周期阶段是 被认为是危险的。此功能具有以下特点: 他被弃用了。请调整你的位置 POM文件相应


    我正在研究如何解决这一问题,但目前,这是可行的,我会坚持下去。

    是的,我考虑过这一点,但我想在实施解决方案之前先问一下。感谢这一想法是,您可以始终轻松地知道特定快照中发生了哪些更改。如果它有用,例如,一个bug在几天或几周后出现在快照中,您可以返回到存储库以更轻松地发现可能存在的问题。此外,与“约定优先于配置”的原则一致,如果代码和注释被记录为变更所涉及的内容,那么将变更记录在特定快照中就成了一件微不足道的事情。“特定快照”是不存在的。快照是头部的最新版本。如果你想追踪事物,使用固定版本。让我换一种说法。无论何时创建并可用快照,都假定它已准备好供其他项目使用(至少在我的工作流程中)(尽管如此,因为它是一个快照,显然仍在开发中)。准确了解自上次创建快照以来发生的更改仍然很有用。但是,另外,如果我选择使用uniqueVersion=true,那么多个“快照”可以同时使用时间戳和序列进行版本控制,其他项目可以专门引用这些时间戳和序列,而不仅仅是快照。在这两种情况下,这种技术都很有用。
    <scm>
      <connection>scm:${repository.type}:${repository.local}</connection>
      <developerConnection>scm:${repository.type}:${repository.local}</developerConnection>
      <url>scm:${repository.type}:${repository.local}</url>
    </scm>
    
    <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>