4

SVN を使用してソース ファイルをバージョン管理し、Maven リリース プラグインを使用してリリースを作成およびタグ付けします。私のプロジェクトはマルチモジュール プロジェクトです。

ショートストーリー

release:prepare ゴールにより、トランクとタグの両方が SCM でタグ付けされます。

長い話

私のプロジェクトはマルチモジュールプロジェクトです:

 bar
    module1
    module2
    ...
    pom.xml

SCM タグは、プロジェクトの親 POM bar/pom.xml で次のように構成されています。

<scm>
  <connection>scm:svn:http://svn.mycompany.local/svn/foo/projects/bar/trunk</connection>
  <url>http://svn.mycompany.local/svn/foo/projects/bar/trunk</url>
</scm>

私が実行すると:

mvn release:prepare -DskipTests=true -DautoVersionSubmodules=true -DdevelopmentVersion=1.1 -DdryRun=true

pom.xml.tag の SCM タグは変更されていますが、例外としてではありません。

<scm>
    <connection>scm:svn:http://svn.mycompany.local/svn/foo/projects/bar/tags/bar-1.0/trunk</connection>
    <url>http://svn.mycompany.local/svn/foo/projects/bar/tags/bar-1.0/trunk</url>
</scm>

そして、リリースを実行すると:

 mvn release:clean release:prepare release:perform -DautoVersionSubmodules=true -DdevelopmentVersion=1.1

ディレクトリ トランク AND タグは、tags フォルダーでタグ付けされます。リポジトリでこの構造を取得します。

bar
   /trunk/
        [...]
   /tags
        /bar-1.0
            /trunk
            /tags

次に、実行目標が失敗します。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:perform (default-cli) on project bar: Error executing Maven. 
Working directory "C:\projects\foo\bar\target\checkout\bar" does not exist! -> [Help 1]

実際、私はこれを target\checkout ディレクトリに持っています:

tags\
trunk\

同じ種類の構成で問題なく動作する他のプロジェクトがいくつかあります。

私がチェックしたこと: - 私のサブバージョン構造は従来のブランチ/トランク/タグに従っているので、tagBase をここで言及する必要はありません - 効果的な POM は正しい SCM 構成を示しています (もちろんタグ付けの前に) - もちろん、SCM の URL がpom.xmlの場所を修正してポイントします

だから、どこを見たらいいのかわからない。同じ問題を抱えていたり、アイデアを持っている人はいますか? 何が欠けていますか?

ありがとう。

4

1 に答える 1

3

最初に、bar-pom のリリース プラグインを 2.0 よりも新しいバージョン (現在は 2.2.2 であるため) で構成し、情報 autoVersinSubmodules も構成に入れることをお勧めします (これにより、作業が楽になります)。指定されたオプション -DdevelopmentVersion=1.1 は意味がありません。開発バージョンの末尾に「-SNAPSHOT」を付ける必要があるためです。そうしないと、開発バージョンではなくリリースになります。さらに developerConnection も追加し、このように「trunk」の最後に「/」を追加します ../trunk/ maven-release-plugin は、使用している Maven バージョンに関連しています。Maven の super-pom は、一連のプラグインとそれらの適切なバージョンも定義します。

于 2012-05-03T08:02:02.380 に答える