Maven pom に追加のリソースを追加する
質問
リソースの「resources」ディレクトリを指定するスーパー pom が定義されています。私のプロジェクトの 1 つでは、私の pom はそのスーパー pom を拡張しており、追加のリソースを追加したいと考えています。私は試した:
<resources>
<resource>
<targetPath>/</targetPath>
<directory>additionalDir</directory>
</resource>
</resources>
しかし、その結果、 のみ addedDir はリソース内にあり、スーパー pom のリソースは含まれません。スーパーポンのリソースを拡張する方法はありますか?
解決
あなたが説明してきた動作が期待されます。
あなたのスーパーPOMは、Mavenのデフォルトから継承されていることを忘れないでくださいあなたのポンポンで定義POM とほとんどすべてのプラグインは、効果的にデフォルトPOMの設定を上書きします。例として、デフォルトのリソース上でフィルタリングを有効にするために、あなたはあなたのPOMのパスを指定する必要があります。あなたは、次の操作を行います。
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
ないこの:
<resources>
<resource>
<filtering>true</filtering>
</resource>
</resources>
デフォルトのディレクトリは、あなたがそこにそれを指定した場合でも、あなたのためにバブルアップしません。そこあなたのためにそれを行うには、特別なMOJOかもしれないが、私は1つを見つけることができませんでした。
他のヒント
ビルドヘルパーのmaven-pluginのの使用状況のページを参照してください。
はい、Maven は新しいリソース セクションを再定義するときに親 POM のリソースをオーバーライドします。
ただし、リソースを追加する簡単な方法は次のとおりです。
- POM からリソース セクションを削除します。
- 有効な POM を表示する
- 有効な POM からプロジェクトにリソースをコピーします。
- 絶対パスを相対パスに置き換えます
- 追加のリソースを追加する
この質問がかなり古いことは知っていますが、おそらく誰かがこれが役に立つと思うでしょう:
Maven リソース プラグインを使用すると、これを簡単に行うことができます。
基本的に、デフォルトで実行されること (resources:resources ゴールの呼び出し) は、宣言されたフィルターを使用して build/resources セクションにリストされているすべてのディレクトリのコンテンツを ${project.build.outputDirectory}
これらのセクションに影響を与えずにリソースを追加したい場合は、自分でリソースをそこに移動するだけです。いいえ、これはそこにドラッグ アンド ドロップするという意味ではありません。
の Maven Resources Plugin
という名前の目標を提供します resources:copy-resources
それはまさにあなたのためにそれを行います:フィルターを使用してある場所から別の場所にファイルをコピーするか、プラグインのドキュメントに記載されているように、ファイルをコピーします。
Mojo copy-resources を使用すると、デフォルトの Maven レイアウトにないリソース、または build/resources 要素で宣言されていないリソースをコピーし、フェーズにアタッチできます。
他のソリューションで提案されているビルド ヘルパーと比較した明らかな利点は、ビルド ヘルパーは実行中にのみアクションを実行できることです。 generate-sources
フェーズにかかわらず、リソース プラグインはどのフェーズでも機能します。(ただし、パッケージング段階の前に実行するのが賢明です)
これを使用する方法の完全な例が提供されています ここ, 、プラグインプロジェクトページの一部として。
これは、リストされていないリソース ディレクトリの内容に対処することを意味します。src/non-packaged-resources
" の中へ "${basedir}/target/extra-resources
」。ただし、jar プラグイン (jar アーカイブを作成する) は基本的にディレクトリの zip アーカイブを作成するため、${project.build.outputDirectory}
」と入れておくと良いかもしれません。