2016-11-14 14 views
1

モジュールAとBからなるMavenアグリゲータプロジェクトXがあります。私の配信パイプラインの最初の段階では、現在のスナップショットバージョンのXをビルドしますが、すべての依存関係はリリースです。 (目的はリリースがスナップショットの依存関係を持たないリリース可能な状態になるようにすることです)。同じビルドのモジュールを除いて、リリース依存関係を強制する

AとBはXを親として参照し、BはAを依存関係にします。 (私はMaven Enforcer PluginにReactor Module Convergenceルールを適用するように設定しました)

現在の原子炉建屋のプロジェクトを除くすべての依存関係のリリース版を強制するよう説得することはできますか?

答えて

1

Maven Enforcer PluginrequireReleaseDepsルールにはインポート/エクスポートメカニズムが組み込まれています。たとえば、あなたはすべての依存関係がグループID my-group-idに位置除き、リリースバージョンを使用していることを要求する場合は、あなたが持っているでしょう:

<requireReleaseDeps> 
    <message>No Snapshots Allowed!</message> 
    <excludes> 
    <exclude>my-group-id:*</exclude> 
    </excludes> 
</requireReleaseDeps> 

含みまたは除外がAbstractStrictPatternArtifactFilterクラスで文書化されているに渡された文字列それらは形式[groupId]:[artifactId]:[type]:[version]に従います。各部分にはワイルドカード*も含まれています。

これは、原子炉内のすべてのプロジェクトが同じグループIDを共有している場合に問題ありません。さらに<exclude>要素を追加して、それぞれの案件IDを指定して、それぞれのプロジェクトを具体的にターゲティングすることもできます。 MENFORCER-185は、allowSnapshotsInReactorブール値を追加し、include/excludeとは異なる方法でリアクタからプロジェクトを処理するという強化要求ですが、これはよりクリーンなソリューションを提供しますが、今日の時点では解決されません。

+0

次のバージョンのプラグインでMENFORCER-185が出荷されるのを待ち望んでいます! – Rinke

1

scijava-maven-pluginは、リアクタ外のすべての依存関係がリリースであり、リアクタモジュール間のスナップショットを許可することを強制するエンハーサル規則requireReproducibleBuildsを提供します。

maven-enforcer-plugin<dependencies>セクションに次の行を追加します。

<dependency> 
    <groupId>org.scijava</groupId> 
    <artifactId>scijava-maven-plugin</artifactId> 
    <version>1.0.0</version> 
</dependency> 

そしてmaven-enforcer-plugin設定の<rules>セクションに次

org.fooorg.barがしたいコンポーネントのgroupIdsある
<!-- 
Require builds to be reproducible. 
This means no snapshot dependencies! 
--> 
<requireReproducibleBuilds implementation="org.scijava.maven.plugin.enforcer.RequireReproducibleBuilds"> 
    <groupIds>org.foo,org.bar</groupIds> 
</requireReproducibleBuilds> 

再現可能な依存関係構造を確保する。

設定例については、hereを参照してください。

+0

この代替案ありがとう – Rinke

関連する問題