[英]How can I mvn:install shaded maven artifact
這應該很容易,但我遇到了 maven-install 插件的奇怪行為。
我需要將一些常見的依賴項重新打包到我的項目中以避免依賴項沖突。 為此,我使用了配置了重定位的 shade 插件:
<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 文件。 但是然后 install plugin 安裝了原始工件(沒有依賴項)而不是陰影部分。
此外,在安裝插件問題之前,我的 CI 服務器 (jenkins) 構建了項目並正確發布了陰影工件和依賴項,將 pom 減少到了 nexus 存儲庫(!!)。 所以現在我從nexus下載了工件,我的本地存儲庫中有正確的jar,但是如果我使用安裝插件,jar將不會好。
有沒有人遇到過類似的問題? 有誰知道如何解決它們??
為了回答我自己的問題,問題是我后來將要着色的依賴項標記為提供的,這樣它們就不會被傳遞到我的其他項目中。 這導致陰影插件不將它們包含在陰影 jar 中。
我也遇到了這個問題,其中mvn install
會在我的目標目錄中構建一個着色的 jar,但將非着色的 jar 安裝到我的本地 Maven 存儲庫中。
最終證明的原因是我在 maven-shade-plugin 配置中定義了<finalName>
。 這最終以該特定名稱保存了陰影 jar,而非陰影 jar 使用默認的 jar 名稱, mvn install
必須查找該名稱。 在沒有<finalName>
,它會將着色的 jar 適當地復制到本地 Maven 存儲庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.