7

pom.xml这是我在多模块项目中的父级(其中一部分):

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
…

该配置指示在根项目每个子模块mvn中执行插件。我不希望它以这种方式工作。相反,我希望这个插件只为根项目执行,并为每个子模块跳过。同时,我有很多子模块,我不喜欢在每个子模块中明确跳过插件执行的想法。checkstyle

Checkstyle 的文档..确保您的子模块中不包含 Maven Checkstyle 插件.. ”。但是如何确保我的子模块继承了我的根pom.xml?我迷路了,请帮忙。

4

2 回答 2

5

但是如何确保我的子模块继承了我的根 pom.xml?

要严格回答这个问题,您可以在定义中指定一个<inherited>元素。<plugin>来自POM 参考

继承: truefalse,此插件配置是否应适用于从该插件继承的 POM。

像这样的东西:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <!-- Lock down plugin version for build reproducibility -->
  <version>2.5</version>
  <inherited>true</inherited>
  <configuration>
    ...
  </configuration>
</plugin> 

更多建议/评论(可能不适用):

于 2010-08-05T14:33:59.130 回答
2

也许您应该将根 pom 分成 2 个独立的实体:父 pom 和聚合器 pom。您的聚合器 pom 甚至可以从父 pom 继承。

如果您下载最新的 hibernate 项目布局,您将看到这种设计模式的实际应用。

完成这个分离后,你就可以在 aggregator/root pom 中定义和执行 checkstyle 插件了。因为它不再是您的子模块的父级,所以它不会被它们继承。

EDIT声明时
使用<relativePath><parent>

只是为了演示,下面是一个来自 hibernate 项目结构的例子。
整个发行版可以在这里找到-> http://sourceforge.net/projects/hibernate/files/hibernate3

就这样,你有一些上下文,这是他们目录布局的一个子集

project-root
   |
   +-pom.xml
   |
   + parent
   |  |
   |  +-pom.xml
   |
   + core
      |
      +-pom.xml

   .. rest is scipped for brevity

项目根/pom.xml 片段

<parent>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-parent</artifactId>
    <version>3.5.4-Final</version>
    <relativePath>parent/pom.xml</relativePath>
</parent>

<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<packaging>pom</packaging>

<name>Hibernate Core Aggregator</name>
<description>Aggregator of the Hibernate Core modules.</description>

<modules>
    <module>parent</module>
    <module>core</module>

项目根/父/pom.xml 片段

<groupId>org.hibernate</groupId>
<artifactId>hibernate-parent</artifactId>
<packaging>pom</packaging>
<version>3.5.4-Final</version>

项目根/核心/pom.xml 片段

<parent>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-parent</artifactId>
    <version>3.5.4-Final</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>

<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<packaging>jar</packaging>
于 2010-08-05T12:14:18.483 回答