gpt4 book ai didi

java - 复制子模块时不要复制父pom

转载 作者:行者123 更新时间:2023-11-30 03:22:53 25 4
gpt4 key购买 nike

package:copy时,我想排除复制父pom(以下代码所在的位置)。目标已执行,但我找不到示例或自己解决:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
<classifier>shaded</classifier>
<destFileName>${project.name}.${project.packaging}</destFileName>
<excludes>*.pom</excludes> <!-- not working -->
</artifactItem>
</artifactItems>
<outputDirectory>${rootdir}/target/modules</outputDirectory>
<silent>true</silent>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>

无论 <excludes>设置里面artifactItem ,它仍然包括我的父项目 NiftyParent.pom 。我想排除该文件被复制到 ${rootdir}/target/modules目录。

如果有人问起,${rootdir}属性仅指向父项目目录,而不硬编码相对/绝对路径(为了论证其 ~/Workspace/Nifty

最佳答案

您可以使用 pluginskip 配置元素与父级及其模块中定义的 Maven property 一起跳过执行。

在您的父 pom 中,您可以按如下方式配置它:

<properties>
<skip-dependency-copy>true</skip-dependency-copy>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
<classifier>shaded</classifier>
<destFileName>${project.name}.${project.packaging}</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${rootdir}/target/modules</outputDirectory>
<silent>false</silent>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<skip>${skip-dependency-copy}</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

注意附加属性和 skip 元素配置。

然后,在每个模块中您可以简单地配置以下内容:

<properties>
<skip-dependency-copy>false</skip-dependency-copy>
</properties>

因此,我们实际上是根据父/模块位置打开/关闭它。这种方法的另一个优点是,您还可以跳过某些模块(如果需要),并能够通过 for 从命令行(覆盖定义的属性值)打开/关闭所有模块(在您的情况下关闭)实例:

mvn package -Dskip-dependency-copy=true

此方法不使用插件配置,但在许多其他插件和情况下需要跳过时通常会使用它。

关于java - 复制子模块时不要复制父pom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30927364/

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