57

Maven リリース プラグインを使用して、スナップショット プロジェクト 'foo-1.0-SNAPSHOT' をリリースしたいと考えています。このプロジェクトは、まだリリースされていないサードパーティ モジュール「bar-1.0-SNAPSHOT」に依存しています。プロジェクトの pom.xml でオプション 'allowTimestampedSnapshots' を使用して、タイムスタンプ付きのスナップショットを許可していますが、maven が未解決の SNAPSHOT 依存関係について文句を言うので、自分でビルドしない限り、サードパーティ モジュール (バー) にはタイムスタンプが付けられないと想定しています。

依存する SNAPSHOT プロジェクトに関係なく、プロジェクト foo をリリースする方法はありますか?

4

5 に答える 5

159

問題はallowTimestampedSnapshotsパラメーター名にあります。ドキュメントに記載されていますが、プラグインのソースは式で別のパラメーター名を使用しています - ignoreSnapshots

そのため、使用するだけ-DignoreSnapshots=trueで、リリース プラグインの準備目標はスナップショットの依存関係を無視します。

于 2010-10-18T13:14:48.513 に答える
24

maven-release-plugin オプションの使用

-DignoreSnapshots=true

それ以外の

-DallowTimestampedSnapshots=true

私の場合は助けになりました。これにより、スナップショットバージョンで依存関係を使用して、リリースを準備および実行できます。

スナップショットの依存関係が更新された場合、リリースでスナップショット バージョンを使用すると、後でリリースが壊れる可能性があるため、このオプションは非常に慎重に処理する必要があります。通常、これは望ましくありません。

于 2011-05-11T12:26:59.220 に答える
10

短い答えは、次の答えを参照してください....長い答えは、それを回避できるということです。

私が過去に対処した唯一の方法は、サードパーティのライブラリを効果的にフォークして、自分でリリースをカットすることでした。もちろん、これは言うは易く行うは難しであり、ライブラリが大規模で複雑な場合は単純に難しく、サード パーティのライブラリがクローズド ソースの場合は不可能です。サードパーティにアプローチして、リリースをカットするよう依頼する方が簡単な方法かもしれません。

別のオプションとして、pom をコピーして (スナップショットがないことを確認して)、バージョン情報を変更し、リポジトリに pom とアーティファクトを手動でインストールすることもできます。

于 2008-10-31T17:26:53.637 に答える
6

前の回答では、グループとアーティファクト ID を変更することを提案していました...この依存関係が後で解放されたときに maven がそれを同じアーティファクトとして認識せず、クラスパスに 2 つのコピーが作成されるため、これを行わないでください。私の好みの方法は、バージョンのみを変更することです。[元のバージョン]-[組織名]-[プルしたsvnバージョン]のようにすると、1.0-SONATYPE-3425のようになります。svn rev を使用することで、いつでもソースを再度プルして、必要に応じてパッチを適用し、ソース全体を自分の svn にプルすることなく、何を使用しているかを正確に知ることができます。

更新 -しばらく前にこれについてブログを書きました。

于 2008-11-08T16:26:41.980 に答える
-2

所有している pom を使用して jar をインストールするだけです。私は通常、これが公式バージョンではないことを明確にするためにグループとアーティファクト ID を変更しますが、通常はそれが問題の最善の回避策です。

于 2008-10-31T21:27:38.520 に答える