3

MavenSCMプラグインは、「コミット」の目標を提供していないようです。scm:checkinコミット AND プッシュを実行します。プッシュを避ける必要があります。

私は単に をすることに興味がありhg commitますinstall:install。私はreleaseプラグインを使用しておらず、まだ必要ありません。マルチモジュール環境でローカルに作業しているだけで、ソース リポジトリが各モジュールのローカルにインストールされた Maven スナップショットと一致することを確認したいと考えています。つまり、モジュールの新しいスナップショットをインストールするたびに、関連するコードを hg にコミットして、すべてのスナップショットを hg リビジョン (またはスナップショット間で複数のコミットが発生する場合はリビジョンの範囲) に直接関連付けるようにします。

4

3 に答える 3

2

以下はフェーズにバインドscm:checkinします。installリポジトリがスキームである限り(コード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 チェックインを実行するだけです。

    <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>
    

1 つの問題は、次のメッセージが表示されることです。

非推奨: アグリゲーターのモジョを POM のライフサイクル フェーズにバインドすることは危険と見なされます。この機能は廃止されました。それに応じてPOMファイルを調整してください。

私はそれを解決する方法を検討していますが、今のところ、それは機能し、私はそれを続けています.

于 2009-12-23T02:14:14.220 に答える
0

Maven の scm プラグインは、「コミット」の目標を提供していないようです。scm:checkinコミット AND プッシュを実行します。プッシュを避ける必要があります。

その場合、scm プラグインはおそらくあなたが探しているものではないでしょう :)

私は単に hg commit 中に興味がありinstall:installます。私はreleaseプラグインを使用しておらず、まだ必要ありません。

正直なところ、これはかなり奇妙な使い方です。あなたが説明したことは理解していますが、SNAPSHOT をリビジョン番号で「同期」することは、私にはあまり意味がありません。2 つの SNAPSHOT ビルドの間にコードをコミットしなくても、これがどのように問題になるのか理解できません。つまり、コミットを強制することの付加価値がわかりません。私の意見では、リリースプラグインを使用しても何も解決しません。

要約すると、scm プラグインで目標を達成できるとは思えません (少なくともハッキングなしでは)。Ant に mercurial のサポートがあるかどうかはわかりませんが、ある場合は、代わりにこの方向に目を向ける必要があります (そして antrun プラグインを使用します)。

于 2009-12-18T20:46:02.660 に答える
0

をローカルボックスの使い捨てリポジトリに設定するのはどうconnectionUrlですか? checkinしたがって、チェックアウトは「中央」リポジトリから行われますが、「チェックイン」は作業リポジトリ (必要なコミット) にのみ送られ、(明らかに) 避けられないプッシュは file:///tmp/whocares に送られます。

あるいは、おそらく scm プラグインには、そのプッシュを避けるためにコメントアウトするコードが 1 行あります。

于 2009-12-18T19:19:35.503 に答える