gpt4 book ai didi

maven - 同时使用 maven-flatten-plugin 和 maven-shade-plugin

转载 作者:行者123 更新时间:2023-12-04 14:56:43 77 4
gpt4 key购买 nike

如何同时使用 maven-flatten-plugin 和 maven-shade-plugin?

我用 revision , sha1 , changelist管理多模块项目的版本。

为了部署可消费的 Artifact ,我使用 maven-flatten-plugin 生成一个扁平化的 pom,使 ${revision} 成为真正的值(value)。

但是 maven-shade-plugin 会产生一个简化的 pom,而 ${revision} 不变。

如何指定maven-shade-plugin使用扁平化的pom来减少pom。

最佳答案

我今天遇到了同样的问题,我在网上找不到真正的解决方案。虽然 PaulT 的建议可能对某些人有用,但我发现这是 Not Acceptable ,因为尽管设置了 <promoteTransitiveDependencies>,但传递依赖项仍未包含在生成的 pom 中。至true .

我可以通过简单地更改 flatten 之间的执行顺序来解决这个问题。和 shade .您只需要确保 flatten运行 之后 shade .如果您在父 pom 中定义了 flatten 插件,只需在您的聚合器项目中添加相同的插件定义,并具有相同的执行 id。

之前(原始订单):

enter image description here

之后(修改顺序):

enter image description here

示例:

  • 父项目 (POM)
    <?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ibasco.test</groupId>
    <artifactId>ucgd-parent</artifactId>
    <packaging>pom</packaging>
    <version>${revision}</version>

    <properties>
    <revision>2.0.0-alpha</revision>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <modules>
    <module>module-one</module>
    <module>module-two</module>
    <module>module-three</module>
    <module>assembly</module>
    </modules>

    <build>
    <pluginManagement>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.1</version>
    </plugin>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>flatten-maven-plugin</artifactId>
    <version>1.1.0</version>
    <configuration>
    <updatePomFile>true</updatePomFile>
    <flattenMode>resolveCiFriendliesOnly</flattenMode>
    </configuration>
    </plugin>
    </plugins>
    </pluginManagement>

    <plugins>
    <!-- Flatten -->
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>flatten-maven-plugin</artifactId>
    <executions>
    <execution>
    <id>flatten</id>
    <phase>package</phase>
    <goals>
    <goal>flatten</goal>
    </goals>
    </execution>
    <execution>
    <id>flatten.clean</id>
    <phase>clean</phase>
    <goals>
    <goal>clean</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </project>
  • 聚合器项目 (POM)
    <?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/xsd/maven-4.0.0.xsd">
    <parent>
    <artifactId>ucgd-parent</artifactId>
    <groupId>com.ibasco.test</groupId>
    <version>${revision}</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ucg-display</artifactId>
    <packaging>jar</packaging>

    <dependencies>
    <dependency>
    <groupId>com.ibasco.test</groupId>
    <artifactId>module-two</artifactId>
    </dependency>
    <dependency>
    <groupId>com.ibasco.test</groupId>
    <artifactId>module-one</artifactId>
    </dependency>
    </dependencies>

    <build>
    <plugins>

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <!-- A little workaround to disable the jar warning -->
    <classesDirectory>src</classesDirectory>
    <excludes>
    <exclude>**</exclude>
    </excludes>
    </configuration>
    </plugin>
    <!-- Javadoc -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <executions>
    <execution>
    <id>aggregate-javadocs</id>
    <phase>package</phase>
    <goals>
    <goal>aggregate-jar</goal>
    </goals>
    <configuration>
    <includeDependencySources>true</includeDependencySources>
    <dependencySourceIncludes>
    <dependencySourceInclude>com.ibasco.test:*</dependencySourceInclude>
    </dependencySourceIncludes>
    <dependencySourceExcludes>
    <dependencySourceExclude>com.ibasco.test:module-three</dependencySourceExclude>
    </dependencySourceExcludes>
    </configuration>
    </execution>
    </executions>
    </plugin>
    <!-- Shade plugin -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <executions>
    <execution>
    <phase>package</phase>
    <goals>
    <goal>shade</goal>
    </goals>
    <configuration>
    <createSourcesJar>true</createSourcesJar>
    <shadedArtifactAttached>false</shadedArtifactAttached>
    <createDependencyReducedPom>true</createDependencyReducedPom>
    <!-- Make sure the transitive dependencies are written to the generated pom under <dependencies> -->
    <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
    <artifactSet>
    <includes>
    <include>com.ibasco.test:module-one</include>
    <include>com.ibasco.test:module-two</include>
    </includes>
    </artifactSet>
    </configuration>
    </execution>
    </executions>
    </plugin>
    <!-- Flatten -->
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>flatten-maven-plugin</artifactId>
    <executions>
    <execution>
    <id>flatten</id>
    <phase>package</phase>
    <goals>
    <goal>flatten</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </project>

  • 输出:
        <?xml version="1.0" encoding="UTF-8"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>com.ibasco.test</groupId>
    <artifactId>ucgd-parent</artifactId>
    <version>2.0.0-alpha</version>
    </parent>
    <groupId>com.ibasco.test</groupId>
    <artifactId>ucg-display</artifactId>
    <version>2.0.0-alpha</version>
    <dependencies>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
    <scope>compile</scope>
    <optional>false</optional>
    </dependency>
    </dependencies>
    <build>
    <plugins>
    <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <classesDirectory>src</classesDirectory>
    <excludes>
    <exclude>**</exclude>
    </excludes>
    </configuration>
    </plugin>
    <plugin>
    <artifactId>maven-javadoc-plugin</artifactId>
    <executions>
    <execution>
    <id>aggregate-javadocs</id>
    <phase>package</phase>
    <goals>
    <goal>aggregate-jar</goal>
    </goals>
    <configuration>
    <includeDependencySources>true</includeDependencySources>
    <dependencySourceIncludes>
    <dependencySourceInclude>com.ibasco.test:*</dependencySourceInclude>
    </dependencySourceIncludes>
    <dependencySourceExcludes>
    <dependencySourceExclude>com.ibasco.test:module-three</dependencySourceExclude>
    </dependencySourceExcludes>
    </configuration>
    </execution>
    </executions>
    </plugin>
    <plugin>
    <artifactId>maven-shade-plugin</artifactId>
    <executions>
    <execution>
    <phase>package</phase>
    <goals>
    <goal>shade</goal>
    </goals>
    <configuration>
    <createSourcesJar>true</createSourcesJar>
    <shadedArtifactAttached>false</shadedArtifactAttached>
    <createDependencyReducedPom>true</createDependencyReducedPom>
    <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
    <artifactSet>
    <includes>
    <include>com.ibasco.test:module-one</include>
    <include>com.ibasco.test:module-two</include>
    </includes>
    </artifactSet>
    </configuration>
    </execution>
    </executions>
    </plugin>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>flatten-maven-plugin</artifactId>
    <executions>
    <execution>
    <id>flatten</id>
    <phase>package</phase>
    <goals>
    <goal>flatten</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </project>

    关于maven - 同时使用 maven-flatten-plugin 和 maven-shade-plugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552329/

    77 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com