如何在多模块项目中使用Maven Checkstyle插件?
这是我在多模块项目中的父 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 的文档说 "< em>..确保您的子模块中不包含 Maven Checkstyle 插件..”。但是我如何确保我的子模块继承我的根pom.xml
?我迷路了,请帮忙。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要严格回答这个问题,您可以在 元素>
定义。来自 POM 参考:
像这样的东西:
一些更多的建议/评论(可能不适用):
To strictly answer this question, you can specify an
<inherited>
element inside a<plugin>
definition. From the POM Reference:Something like this:
Some more advices/remarks (that may not apply):
也许您应该将根 pom 分成 2 个独立的实体:父 pom 和聚合器 pom。您的聚合器 pom 甚至可能继承自父 pom。
如果您下载最新的 hibernate 项目布局,您将看到此设计模式的实际应用。
完成此分离后,您可以在 aggregator/root pom 中定义并执行 checkstyle 插件。因为它不再是子模块的父模块,所以它们不会继承它。
编辑
声明
时使用只是为了演示,下面是一个取自 hibernate 项目结构的示例。
整个分布可以在这里找到-> http://sourceforge.net/projects/hibernate/files/hibernate3
就是这样,您有一些上下文,这是其目录布局的子集
project-root/pom.xml片段
project-root/parent/pom.xml片段
project-root/core/pom.xml片段
Perhaps you should separate your root pom into 2 separate entities: parent pom and aggregator pom. Your aggregator pom may even inherit from parent pom.
If you download latest project layout for hibernate, you will see this design pattern in action.
After this separation is done, you can define and execute checkstyle plugin just in aggregator/root pom. Because it is no longer a parent of your submodules it will not get inherited by them.
EDIT
Use
<relativePath>
when declaring<parent>
Just for demonstration, below is an example taken from the hibernate project structure.
The whole distribution can be found here-> http://sourceforge.net/projects/hibernate/files/hibernate3
Just so, that you have some context, here is a subset of their directory layout
project-root/pom.xml fragment
project-root/parent/pom.xml fragment
project-root/core/pom.xml fragment