问题描述
我正在使用 org.apache.maven.plugins:maven-shade-plugin:3.2.4
创建一个 JAR 文件,其中包含我的所有(多模块)项目的核心依赖项。从那里,我使这个模块成为我所有其他模块的依赖项。这使我可以在一个地方定义所有核心依赖项,并且只有一个阴影插件重定位配置,而不必将相同的阴影插件信息复制并粘贴到每个模块中,这些模块都希望以相同的方式对依赖项进行着色。
但是,问题是shade-plugin在打包阶段之前没有运行。因此,如果我只运行 mvn test
,项目将无法编译,因为这些核心依赖项在 package
阶段之前未收集、着色、重新定位。
有没有一种方法可以在 POM 中定义一种方法,无论在顶级目录中指定的 mvn
阶段如何,该模块始终运行到包阶段?
仅供参考:番石榴 27.0-jre
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>app</artifactId>
<groupId>org.my.app</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>app-thirdparty</artifactId>
<build>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<relocations>
<relocation>
<pattern>com.google</pattern>
<shadedPattern>org.my.app.thirdparty.com.google</shadedPattern>
</relocation>
<relocation>
<pattern>org.checkerframework</pattern>
<shadedPattern>org.my.app.thirdparty.org.checkerframework</shadedPattern>
</relocation>
<relocation>
<pattern>org.codehaus</pattern>
<shadedPattern>org.my.app.thirdparty.org.codehaus</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)