强制项目模块的 Maven 生命周期

问题描述

我正在使用 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 (将#修改为@)