2016-12-05 8 views
0

背景:私のJavaプロジェクトのほとんどは、多くのボイラープレート構成を持っているので、私のPOMに書き込むことになります。 (たとえば、sourceEncodingは常にUTF-8です。組織の詳細は決して変更されません)。コピーブロックの設定を保存するために、自分の標準の「親」POMを作成しました。各プロジェクトごとに拡張することができます。Maven:親POMのバージョンを読むには

私は、私が作業しているすべてのJavaプロジェクト(checkstyle、PMDなど)で使用する多数のツールを用意していますので、各ツールのプラグインを標準の親pomに追加しました。

PMD(およびその他のツール)には面白い問題があります。正しく動作するには、一連の設定ファイルが必要です。マイテンプレート

<My Template> 
    |--- Config Files 
    \--- Parent Pom 
  • :Mavenのは、「モジュールごとに展開可能な資源」の概念で動作することを好むので、私は、次の(簡体字)構造を作成しましたは、2つのモジュールとMavenの制御プロジェクトです
  • コンフィグファイル:はすべて私のボイラープレートコードです:はZIPにPMDの設定ファイルをバンドルし、Mavenのレポ
  • 親ポンポンにそれらを展開Mavenのモジュールです。それは....「設定ファイル」に依存しているし、これまでのところは良いZIP

から設定を抽出するように設定されている

のrequirment:「親ポンポン」と「コンフィグファイル "は常にビルドされ、一緒にデプロイされます。つまり、" Parent Pom "バージョン1.2.3は" Config Files "バージョン1.2.3でしか動作しませんので、" Parent POM "で依存関係を記述すると、 :

<dependency> 
    <groupId>org.my-org</groupId> 
    <artifactId>config-files</artifactId> 
    <version>${project.version}</version> 
    <type>zip</type> 
    <scope>test</scope> 
</dependency> 

問題:私は自分のアプリケーションを起動するときに(バージョン0.0.1としましょう)、親として「Parent Pom」を使用します。 Mavenはプロジェクトの有効POMを計算し、$ {project.version}は1.2.3(親POMバージョン)ではなく0.0.1(アプリケーションバージョン)と解釈されます。 Mavenは設定ファイルを見つけられません。

質問:質問:「POM xxxのバージョンを教えてください」とMavenに伝えるにはどうすればよいですか?

私が実際にやっていないのは、リリースのPOMをバンプしたときに更新するのを忘れることができるので、$ {project.version}とロックステップの追加プロパティを作成することです!

答えて

1

できることがいくつかあります。

${project.version}の代わりに${project.parent.version}を使用できます。

おそらく、より良い方法は、適切なバージョンと構成で、pluginManagementおよび/またはdependencyManagementを親のpomに定義することです。あなたの子供のプロジェクトでは、dependenciesまたはbuild/pluginsの "管理された"バージョン/構成を、具体的なバージョンや構成の指定なしで "使用"しているだけです。

たとえば、オープンソースプロジェクトで広く使用されているorg.sonatype.oss:oss-parent POMを参照してください。

+0

こんにちは@lexicore、 '$ {project.parent.version}'はうまく仕事をします。私の計画は、この変数を使ってプロパティを定義し、 'pluginManagement'を設定するときにそれを参照することです – Stormcloud

関連する問題