web-dev-qa-db-ja.com

Mavenリリースプラグイン-SNAPSHOTプロジェクトが必要

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.defcompany parent POMであり、私はutilsmvn 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はスナップショットではありません。それが理由でしょうか?

10
Pulak Agrawal

私は同じ問題を抱えていましたが、これらの解決策は機能しませんでした。 Tomek Kaczanowskiによるこのブログ投稿 頭に釘を打ちます。

多くの場合、原因は、JenkinsSVN戦略が「可能な限りsvnupdateを使用する」ように設定されているため、ビルド間でビルドワークスペースがクリーンアップされないことです。

リリースをカットしようとすると、Jenkinsはpomを更新し、いくつかの一時ファイルを作成します。リリースが失敗した場合、これらのpom更新と一時ファイルはクリーンアップされません。したがって、pomを修正して再構築しようとすると、You don't have a SNAPSHOT project in the reactor projects listJenkinsを混乱させるこれらのファンキーなワークスペースアーティファクトによるエラー。

解決策は、JenkinsSVN戦略を変更することです。次のいずれかが機能するはずです。

  • 常に新しいコピーをチェックしてください
  • 最初にバージョン管理されていない/無視されたファイルを削除し、次に「svn update」を使用して、クリーンチェックアウトをエミュレートします
  • 可能な限りsvnupdateを使用し、更新前に「svnrevert」を使用します

また、Jenkinsワークスペースをクリアして、最初からやり直していることを確認することをお勧めします。

14
Marquee

マスターpomSNAPSHOTである必要はありません(私の会社では同じ設定で問題なく動作します)。 utils pomのこの部分は、私が知る限り問題ないので、他の何かが足りないかもしれません。

<scm>
    <developerConnection>scm:${release-scm}</developerConnection>
</scm>

そしてもちろん、POMのビルド定義のmaven release pluginセクション? (私が知っているロングショット)

5
tohokami

「SNAPSHOT」という用語のスペルに問題があることがありますが、これも基本的に同じエラーにつながります。お気に入り:

 1. SNAPSOT
 2. SNASHOT
 3. SHNAPSOT

;-)したがって、これを事前に確認する価値があります。

修正するのに最適なのは、親pomで使用することです。

versions:set
4
cschaefer

実際、Jenkisのワークスペースには、一部のモジュールの古い非スナップショットバージョンが含まれています。ワークスペースを消去して(=クリーンアップしてクリアするために)、もう一度リリースを実行すると、サフィックスが-SNAPSHOTの修正バージョンが取得されます。

3
InstantKarma

私は理由を見つけました:最新の会社の親POMがピックアップされていませんでした

  1. clean引数リストにmvn-Uの両方がありました。動作しませんでした
  2. 次に、~/.m2リポジトリをクリーンアップしました。動作しませんでした

うまくいったのは、ジェンキンスです

  1. Job configページに移動します
  2. Buildに移動し、Advancedをクリックします
  3. チェックボックスをオンにしますUse private Maven repository
  4. Local to the workspaceを選択します。 Save

これは、Mavenが何らかの理由で行う習慣がある奇妙なことの1つであることを私は知っています。そしていつものように、エラーは十分に有益で直感的ではありません。

2
Pulak Agrawal