Jenkins内からM2リリースプラグインを使用しています。これはmaven-release-plugin 2.3.2を内部的に呼び出し、ビルド中にこのエラーをスローします:You don't have a SNAPSHOT project in the reactor projects list
。問題は、私のプロジェクトのpoms doのバージョンが1.0.0-SNAPSHOTであるということです。何が足りないのですか?
com.abc.def
はcompany parent POM
であり、私はutils
のmvn release
に対して行っています。
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.abc</groupId>
<artifactId>def</artifactId>
<version>1.0.0</version>
</parent>
<groupId>com.abc.def</groupId>
<artifactId>utils</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>utils</name>
そして、はい、私は基本的なGoogle + SOトロール網を実行しましたが、POMにはすでに存在するバージョンとしてSNAPSHOTが必要であることが示されています。ただし、会社の親POMはスナップショットではありません。それが理由でしょうか?
私は同じ問題を抱えていましたが、これらの解決策は機能しませんでした。 Tomek Kaczanowskiによるこのブログ投稿 頭に釘を打ちます。
多くの場合、原因は、JenkinsSVN戦略が「可能な限りsvnupdateを使用する」ように設定されているため、ビルド間でビルドワークスペースがクリーンアップされないことです。
リリースをカットしようとすると、Jenkinsはpomを更新し、いくつかの一時ファイルを作成します。リリースが失敗した場合、これらのpom更新と一時ファイルはクリーンアップされません。したがって、pomを修正して再構築しようとすると、You don't have a SNAPSHOT project in the reactor projects list
Jenkinsを混乱させるこれらのファンキーなワークスペースアーティファクトによるエラー。
解決策は、JenkinsSVN戦略を変更することです。次のいずれかが機能するはずです。
また、Jenkinsワークスペースをクリアして、最初からやり直していることを確認することをお勧めします。
マスターpom
もSNAPSHOT
である必要はありません(私の会社では同じ設定で問題なく動作します)。 utils pom
のこの部分は、私が知る限り問題ないので、他の何かが足りないかもしれません。
<scm>
<developerConnection>scm:${release-scm}</developerConnection>
</scm>
そしてもちろん、POM
のビルド定義のmaven release plugin
セクション? (私が知っているロングショット)
「SNAPSHOT」という用語のスペルに問題があることがありますが、これも基本的に同じエラーにつながります。お気に入り:
1. SNAPSOT
2. SNASHOT
3. SHNAPSOT
;-)したがって、これを事前に確認する価値があります。
修正するのに最適なのは、親pomで使用することです。
versions:set
実際、Jenkisのワークスペースには、一部のモジュールの古い非スナップショットバージョンが含まれています。ワークスペースを消去して(=クリーンアップしてクリアするために)、もう一度リリースを実行すると、サフィックスが-SNAPSHOTの修正バージョンが取得されます。
私は理由を見つけました:最新の会社の親POMがピックアップされていませんでした
clean
引数リストにmvn
と-U
の両方がありました。動作しませんでした~/.m2
リポジトリをクリーンアップしました。動作しませんでしたうまくいったのは、ジェンキンスです
Job config
ページに移動しますBuild
に移動し、Advanced
をクリックしますUse private Maven repository
Local to the workspace
を選択します。 Save
これは、Mavenが何らかの理由で行う習慣がある奇妙なことの1つであることを私は知っています。そしていつものように、エラーは十分に有益で直感的ではありません。