web-dev-qa-db-ja.com

dependency-reduced-pom.xmlをベースディレクトリに追加するMavenシェードプラグイン

Mavenシェードプラグインはdependency-reduced-pom.xmlおよびartifactname-shaded.jarというファイルを作成し、ベースディレクトリに配置します。

これはバグですか?ターゲットディレクトリにある必要があります。回避策はありますか?

52
DD.

createDependencyReducedPomをfalseに設定すると、作成されないようにすることができます。

例えば.

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>${maven-shade-plugin.version}</version>
    <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
    </configuration>
    ....
    ....
</plugin>

Apacheからの詳細 を参照してください

enter image description here

59
xverges

bmargulies '回答とXv。の回答に対する彼のコメントに基づいて、依存関係を削減したPOMをtarget/に出力するように構成することにしました。 VCSではすでに無視されています。

そのために、プラグインのdependencyReducedPomLocation要素にconfiguration要素を追加しました。

<configuration>
  <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
  (...)
</configuration>
19
Zoltán

https://issues.Apache.org/jira/browse/MSHADE-121 、および httpsも参照してください。 //issues.Apache.org/jira/browse/MSHADE-124

D-r-pを他の場所に移動するオプションがありますが、結果が気に入らないかもしれません。

-shaded jarについて間違っています。他の場所に移動しない限り、常にtarget /になります。

8
bmargulies

古いバージョンのプラグインを使用できます。 maven-shade-pluginのバージョン1.7は、/ targetに書き込みます。

バージョン1.7.1以降、依存関係を削減したpom.xmlはbasedirに書き込まれます。問題が発生した理由と結果については、 MSHADE-124 を参照してください。 dependencyReducedPomLocationを設定しようとすると、サイトの生成で問題が発生する可能性があります-未解決の問題 MSHADE-145

3
canadianveggie

http://maven.Apache.org/plugins/maven-shade-plugin/shade-mojo.html のドキュメントは、次のように書かれている場合、間違っています:

createDependencyReducedPom boolean-シェーディングされたアーティファクトの簡易POMを生成するかどうかを示すフラグ。 trueに設定されている場合、uber JARに含まれている依存関係は、生成されたPOMのセクションから削除されます。縮小されたPOMは、dependency-reduced-pom.xmlという名前になり、影付きのアーティファクトと同じディレクトリに保存されます。 dependencyReducedPomLocationも指定しない限り、プラグインはプロジェクトbasedirにdependency-reduced-pom.xmlという名前の一時ファイルを作成します。デフォルト値はtrueです。

dependency-reduced-pom.xmlは、notシェーディングされたアーティファクト(ターゲットディレクトリ)と同じディレクトリに格納されています...実際にはターゲットではなくベースディレクトリ

0
nanite