web-dev-qa-db-ja.com

Mavenリポジトリのリリースまたは特定のモジュールをスキップする方法

ねえ、

私はこの構造のMavenプロジェクトを持っています:

親:

  • リストアイテム
  • APIモジュール
  • module2
  • .。
  • module5
  • テスト
  • 流通/組立

したがって、最初に親モジュールを実行し、次にAPIをビルドするモジュールを実行し、次にAPIに依存するモジュールを実行し、次にテストするツールを含むテストモジュールを実行し、最後にいくつかをパッケージ化するアセンブリ/ディストリビューションを実行しますアーカイブ内のモジュール。いくつかの問題のために、私は実際に方法を変えることができず、それは今のところ完璧に機能します。

Jenkinsを使用して、Mavenリポジトリにリリースしますが、たとえばAPIといくつかのモジュールのみをリリースし、テストモジュールと配布モジュールはリリースしません。それらをスキップする方法はありますか?私が本当に必要としないものをリリースしたくない:/

21
maxammann

あなたを正しく理解するために、あなたはまだテストモジュールを実行したいが、それらをデプロイ/リリースしたくない。 maven-deploy-plugin 救助に!アーティファクトは引き続きビルドされますが、デプロイされません。

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        <skip>true</skip>
    </configuration>
  </plugin>

ただし、jenkinsリリースプラグインは引き続きすべてのアーティファクトをリリースします。 jenkinsリリースプラグインを使用する代わりに、 maven-release-plugin でリリースすることを検討してください。これは簡単に実行できます。

mvn release:prepare
mvn release:perform

デフォルトの目標deploysiteなので、すべて問題ないはずです。

ルートpomにscmタグがあることを確認してください。

<scm>
    <connection>scm:svn|git:https://...</connection>
    <developerConnection>scm:svn|git:https://...</developerConnection>
</scm>

また、バージョン管理ツールコマンド(git、svn、...)がPATHで利用可能であること。

29
asgoth

Mavenコマンドラインオプションを追加して、jenkinsに組み込まれるモジュールを指定できます。

-pl,--projects <arg>                   Comma-delimited list of specified
                                       reactor projects to build instead
                                       of all projects. A project can be
                                       specified by [groupId]:artifactId
                                       or by its relative path.
2
Xiujun Ma

アグリゲータープロジェクトの目的は、単純なプロジェクトの建築要件を組み合わせることです。基本プロジェクトの建築要件が異なる場合は、新しいアグリゲータープロジェクトを追加することを検討してください。

現在のアグリゲータープロジェクトでMavenリポジトリーへのデプロイを無効にし、デプロイするモジュールのみを含む新しいアグリゲータープロジェクトを作成します。

この新しいプロジェクトをJenkinsに追加し、元のプロジェクトに依存させて、リポジトリにデプロイされるように構成します。

0
Nicola Musatti