更新解決策がないように思われるため、この質問を終了するようフラグを立てています-プラグインが本来の動作をしていないだけで、誰もその理由を知らないようです. scm
やなどの他のプラグインを使用して、リリースプラグインの望ましい動作を自分で手動で複製する小さなプログラムを作成することになりversions
ました。私がこれをどのように行ったかについての情報が必要な場合は、お気軽に私にメールしてください。
最近、プロジェクトをmavenに移動しました。ただし、リリースプロセスに問題があります。
私のリリース手順は次のとおりです。
mvn scm:checkout -DconnectionUrl=scm:svn:https://my-server/svn/my-project/trunk -DcheckoutDirectory=my-project
cd my-project
mvn --batch-mode release:prepare
mvn release:perform
で開始し1.0.0-SNAPSHOT
、上記のリリース手順を実行します。これにより、私のレポが次のように更新されます(新しさの昇順)。
1.0.0-SNAPSHOT
1.0.0
1.0.1-SNAPSHOT
pom.xml
更新されたポイントや、SCM で作成され1.0.1-SNAPSHOT
たというタグなど、すべてが期待どおりに発生します。my-project-1.0.0
ただし、手順を再度実行すると、リポジトリに次のように表示されます。
1.0.0-SNAPSHOT
1.0.1-SNAPSHOT
1.0.0
1.0.2-SNAPSHOT
つまり、リリース 1.0.1 は作成されず、代わりに 1.0.1-SNAPSHOT が 1.0.0 にリリースされます。他のすべての側面が期待どおりに実行されることに注意してください。pom.xml
現在、 は を指して1.0.2-SNAPSHOT
おり、SCM に という名前のタグが作成されていますmy-project-1.0.1
。
実際、リリース手順を実行するたびに SNAPSHOT は増加しますが、リリースは 1.0.0 に書き込まれ、新しいリリースは作成されません。たとえば、リリース手順をさらに 3 回再実行すると、次のようになります。
1.0.0-SNAPSHOT
1.0.1-SNAPSHOT
1.0.2-SNAPSHOT
1.0.3-SNAPSHOT
1.0.4-SNAPSHOT
1.0.0
1.0.5-SNAPSHOT
上記の予想される動作は次のとおりです。
1.0.0-SNAPSHOT
1.0.0
1.0.1-SNAPSHOT
1.0.1
1.0.2-SNAPSHOT
1.0.2
1.0.3-SNAPSHOT
1.0.3
1.0.4-SNAPSHOT
1.0.4
1.0.5-SNAPSHOT
pom.xml
最初のバージョンの を以下に示します。
<project xmlns="http://maven.apache.org/POM/4.0.0" x mlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo</groupId>
<artifactId>my-project</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>my-project</name>
<distributionManagement>
<repository>
<id>my-server</id>
<url>file://\\my-server\repo\</url>
</repository>
</distributionManagement>
<scm>
<developerConnection>scm:svn:https://my-server/svn/my-project</developerConnection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>my-server</id>
<url>file://\\my-server\repo\</url>
</repository>
</repositories>
</project>
release
以下の回答の1つは、私が持っていない別のsnapshot
レポを作成する必要があることを示唆しています。これが問題の原因になっている可能性はありますか?
mvn deploy
コードがコミットされるたびに Jenkins を使用して自動的に呼び出すことに注意してください。ただし、これは期待どおりに動作しているため(つまり、リポジトリへのコミットで指定されているバージョンをデプロイするpom.xml
)、これが問題の一部であるとは思えません。
ご協力いただきありがとうございます。
アップデート
コマンドからの出力を調べるとmvn release:perform
、次のように表示されます。
Checking out the project to perform the release ...
Executing: cmd.exe /X /C "svn --non-interactive checkout https://my-server/svn/my-project/tags/my-project-1.0.2 c:\localrelease\mvn\my-project\target\checkout"
Working directory: c:\localrelease\mvn\my-project\target
Invoking perform goals in directory c:\localrelease\mvn\my-project\target\checkout\tags\my-project-1.0.0\trunk
Executing goals 'deploy'...
1.0.0
そして、毎回リリースする理由があります-更新されたタグをチェックアウトしますが、古い1.0.0
タグでリリースします(1.0.1
タグがターゲット/チェックアウトフォルダーに存在する場合でも)。なぜこれを行うのですか?
更新 2
2 つの別々のリポジトリ (スナップショット用とターゲット用) に分割しましたが、この問題は引き続き発生します。
release:perform
また、ログをさらに調査したときに気づいたこと: タグのチェックアウトにはmy-project-1.0.1
のタグが含まれてい1.0.0
ます。同様に、タグのチェックアウトにはタグやなど1.0.2
が含まれます。これは正しい動作ですか?1.0.0
1.0.1
おそらく、リリース プロセスは常に、チェックアウトするすべてのタグ フォルダーを検索し、最初に見つかったものを使用します。これは、最初のリリースを除く1.0.0
すべてのリリースに常に適用されます。
これは非常に奇妙な説明のように思えますが、私が見た動作についてこれまでのところ唯一の説明です。pom.xml
問題は、これを発生させるために誤って構成したものは何ですか?
別の注意: release を実行すると、 deploy ゴールは'build.plugins.plugin.version' for org.apache.maven.plugins:maven-xxxx-plugin is missing.
for maven-javadoc-plugin
、maven-deploy-plugin
and maven-source-plugin
. これらを明示的に追加する必要がありますか?