当前位置: 首页 > 知识库问答 >
问题:

排除父 POM 中的指令

段志
2023-03-14

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

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

因此,在运行mvn全新安装时,没问题,我得到了一个没有不需要的文件夹的JAR。

然而,我有几个项目需要包含此指令(以及其他常见配置),因此我使用的是父POM项目。除上述指令外,一切正常。一旦我将这个排除部分移到父POM定义中,它就不再工作了。

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

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

共有1个答案

亢建白
2023-03-14

你需要使用pluginManagement

家长.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>

child-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>
 类似资料:
  • Maven插件及其在父pom中定义的依赖项,我不希望我的子pom包含该插件依赖项。 例如,如果有1个父级和100个子级,99个使用该插件并希望在一个子级中排除该插件。 我们如何才能实现这一目标?

  • 在我的父pom xml文件中,我声明了一些在大多数孩子的pom中使用的依赖项。 然而,在一个子pom中,我不使用这些依赖项,我想找到一种方法来排除它们(为了不被视为未使用的依赖项)。 现在,在子pom的依赖部分,我什么都没有!有什么想法吗?

  • 我让项目B从项目A继承。在项目A中,我必须将从Maven下载的jar文件复制到lib文件夹中。项目A的pom文件: 当我构建时,maven将jar文件复制到lib文件夹,但它也会在项目B中创建lib文件夹,并将项目A的pom文件中定义的jar文件复制到其中。现在我想在项目B中排除它。我尝试使用下面的脚本,但它不起作用。 我指的是这个链接:是否存在排除从父POM继承的工件的方法?。但这对我也没有帮助

  • 我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。 ie父Pom 儿童Pom 到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。 我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢

  • 我们有一个Maven多模块项目,其中有大约30个子项目/模块。 使用这两个依赖项的所有子项目。(这只是为了在示例中放一些具体的东西) 因此,我们重构并将这两个依赖项放入父POM。上面的片段现在在父级别。所有子项目仍然可以从中受益,并且只需要在一个地方维护版本,所有人都很高兴。 我们现在有一个适合业务用例的第31个项目,适合这个多模块项目,我们相信把它放在同一个父POM下是有意义的。 然而,第31个

  • 是否有一个具体的推荐方法将spring启动的父pom包含到已经有一个必需的父pom的项目中? 对于需要从组织父级扩展的项目,您有什么建议(这是非常常见的,甚至是许多/大多数项目发布到Maven central,这取决于它们来自的feeder Repo)。大部分构建内容都与创建可执行JAR相关(例如,运行嵌入式Tomcat/Jetty)。有一些方法可以对事物进行结构化,这样您就可以获得所有的依赖关系