0

単一の SVN リポジトリに小さなプロジェクトがたくさんあります。リポジトリの構造は次のとおりです。

/trunk
   /artifactId1
   /artifactId2
   /groupId
      /artifactId3
      /artifactId4
/branches
  ... see above
/tags

そのため、Maven リポジトリに少し似ています。

ここで、タグ付け時に同様の構造を作成する maven リリース プラグインが必要です。プラグイン構成を次のように変更しました。

<tagNameFormat>@{project.groupId}/@{project.artifactId}/@{project.version}</tagNameFormat>

Maven リリース プラグインは正しい SVN URL を作成します: https://repo/tags/groupId/artifactId3/1.0.0

ただし、パス構造はリポジトリにまだ存在しないため、SVN の「タグ」アクションは失敗します。

タグのサポートが必要な SVN リポジトリに新しいアーティファクトが追加されるたびに、パス構造を作成したくありません。タグ付けの前に最初に親構造を作成するようにmavenを構成する方法はありますか? または、これを行う maven 用のプラグインを作成する必要がありますか?

4

3 に答える 3

1

ネストされたタグとブランチがパスではないことがわかっているため、すぐに使用できるツールはありません。

ArtifactID1-4 は別々の svn プロジェクトであり、一緒にビルドおよびリリースされていないようです。おそらく、それぞれが独自のブランチ タグとトランク フォルダーを持つ svn のプロジェクトである必要があります。あなたが言及した混乱と、ネストされたブランチとタグの混乱を避けるでしょう。

于 2013-04-01T21:20:19.460 に答える
0

私はすでにこの種の問題に直面していましたが、あなたの問題を解決するための明確な答えは提供しません. 確かに、あなたは「maven way」ではないことをしようとしています...

私が理解していることについては、タグ付けしようとしています:

  • アーティファクトを 1 つだけ、groupId/artifactID/version に入れる
  • またはすべてのレポ (たとえば、トランクの下のすべて)。

1 つの成果物のタグ付け

artifact3 のみにタグを付ける場合は、その通りです。初めてタグ付けしようとすると、1 つのコマンドで完全な構造を作成できないため、タグ付けを行うことができません (svn タグは実際にはコピーであり、copy コマンドは、「 Linux では mkdir -p" です。

ただし、Maven の規則 (デフォルトの動作) は tags/artifactId-version ですが、(IDE 経由または svn コマンドラインで) リリースを実行する前に、独自の構造と独自のテンプレートを作成できます。次に、tagNameFormat を必要に応じて (そして、そうするように) 変更します。

<project>
  [...]
  <build>
    [...]
    <plugins>
      [...]
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
          <tagNameFormat>${groupId}/${artifactId}/@{project.version}</tagNameFormat>
        </configuration>
      </plugin>
      [...]
    </plugins>
    [...]
  </build>
  [...]
</project>

khmarbaise が言ったように、tagBase と tagFormat を組み合わせて tagBase を変更することもできます (デフォルトの動作をオーバーライドするため)。私はそれを試したことはありませんでしたが、うまくいくはずです。version は $ ではなく @ を使用することに注意してください (コミット中またはその前に置き換えてはいけませんが、後で taggin 操作中に使用する必要があります)。

明らかに、この方法でタグ付けしたい成果物ごとに適切な構造を作成する必要があります。ただし、一度だけ実行する必要があります。

すべてのアーティファクトのタグ付け

一度にすべてのアーティファクトにタグを付けたい場合、これははるかに困難になります。これがあなたが望むものかどうかわからないので、手がかりをいくつか挙げて簡単に説明します。

  • コンポーネントが一緒にリンクされている場合は、すべてのモジュールがネストされた状態で、マルチモジュール プロジェクトをビルドする (そしてその上で mvn release を実行する) ことを想定してください (これが正しい方法です)。
  • そうでない場合は、一緒にタグ付けする必要はありません;D

私があなたの意図を誤解している場合は、遠慮なく返信して、さらに情報を提供してください。

幸運を :)

于 2012-06-07T21:38:12.153 に答える
0

この問題は、tags フォルダーに groupId および artifactid フォルダーが含まれていないことが原因です。リリース プラグインの構成でtagBaseを設定する必要があります。これは、super-pom の pluginManagement セクションで行うことができます。

于 2012-03-14T19:13:46.983 に答える