1

これは簡単だったはずですが、maven-install プラグインで奇妙な動作が発生しています。

依存関係の競合を避けるために、いくつかの一般的な依存関係をプロジェクトに再パッケージ化する必要がありました。その目的のために、再配置が構成されたシェードプラグインを使用しました。

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <id>do_shade</id>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>true</createDependencyReducedPom>
                        <shadedArtifactAttached>false</shadedArtifactAttached>
                        <createSourcesJar>true</createSourcesJar>
                        <relocations>
                            <relocation>
                              <pattern>com.google.common</pattern>
                              <shadedPattern>com.myproject.google.common</shadedPattern>
                            </relocation>
                            <relocation>
                                <pattern>org.apache.commons</pattern>
                                <shadedPattern>com.myproject.commons</shadedPattern>
                            </relocation>
                        </relocations>
                    </configuration>
                </execution>
            </executions>
        </plugin>

シェード プラグインは正しく機能し、シェーディング アーティファクトcom.myproject-myproject-.jarと依存関係を減らした pom ファイルを生成しました。ただし、プラグインをインストールすると、シェーディングされたものではなく、元のアーティファクト (依存関係なし) がインストールされます

さらに、プラグインの問題をインストールする前に、CI サーバー (jenkins) がプロジェクトをビルドし、シェーディングされたアーティファクトを正しく公開し、依存関係を nexus リポジトリ(!!) に削減しました。したがって、nexus からアーティファクトをダウンロードすると、ローカル リポジトリに正しい jar が作成されますが、インストール プラグインを使用すると、jar は適切ではありません。

誰かが同様の問題を抱えていましたか?誰もそれらを解決する方法を知っていますか??

4

2 に答える 2

0

私自身の質問に答えるために、問題は、他のプロジェクトに推移的に引き込まれないように、後で依存関係を提供済みとしてマークしたことです。これにより、shade プラグインがそれらを shaded jar に含めませんでした。

于 2014-12-24T13:51:54.893 に答える