1

我正在尝试排除要嵌入 JAR 中的完整文件夹。我发现以下指令就像一个魅力:

<plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>**/unwantedJars/**</exclude>
                </excludes>
            </configuration>
        </plugin>
  </plugins>  

所以,在运行时mvn clean install,没问题,我得到一个没有不需要的文件夹的 JAR。

但是,我有几个项目需要包含此指令(以及其他常见配置),所以我使用的是父 POM 项目。除了上述指令外,一切都运行良好。一旦我将此排除部分移动到父 POM 定义中,它就不再起作用了。

奇怪的是,如果我比较这两种配置的有效 POM,它们是完全相同的!

在当前项目的 POM 或父 POM 中使用此指令有什么区别?

4

1 回答 1

0

您需要使用pluginManagement

父 pom.xml

<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">
  ...
  <build>
    ...
    <pluginManagement>
      <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>**/unwantedJars/**</exclude>
                </excludes>
            </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    ...
  </build>
</project>

子 pom.xml

<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">
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
      </plugin>
    </plugins>
    ...
  </build>
</project>
于 2015-08-30T05:46:12.030 回答