我有一组项目,它们都需要在构建期间运行相同系列的Maven插件执行。我想避免在每个项目中重新声明所有这些配置,所以我让它们都从一个只包含那些插件执行(8个不同的mojo)的父pom“模板”项目继承。但我希望在Maven构建期间,这些插件执行只在子项目上运行,而不在父项目上运行。
>
在父POM的build/plugins
元素中声明插件执行,并使用properties-maven-plugin打开父项目中其他插件的skip
属性。这没有起作用,因为插件目标之一(maven-dependency-plugin:build-classpath)没有skip
属性。
在父POM的build/pluginmanagement
元素中声明插件执行。不幸的是,这要求我在每个子项目的pom的build/plugins
元素中重新声明八个插件中的每一个,如:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
...
这太重复了,如果我需要更改模板POM中的插件,这会有问题。
在父pom中的配置文件中声明插件执行,该配置文件由于缺少nobuild.txt
文件(父pom中确实存在该文件,所以插件不会在那里执行)而激活:
<profiles>
<profile>
<activation>
<file>
<missing>nobuild.txt</missing>
</file>
</activation>
<build>
....
</build>
</profile>
</profiles>
除了missing
元素中的文件路径似乎基于当前工作目录而不是项目basedir之外,这在大多数情况下都起作用。这破坏了我想要的一些多模块构建。编辑:为了澄清,父“模板”项目实际上本身就是多模块项目中的一个模块,例如,当我尝试在根上执行mvn install
时,构建就会中断。项目结构如下所示:
+ job
|- job-core
|- job-template
|- job1 inherits from job-template
|- job2 inherits from job-template
设置自定义生命周期和包装。这似乎允许我将插件绑定到生命周期阶段,但不指定任何配置。
那么,有没有另一种方法来指定一组Maven插件的执行,这些插件可以跨多个项目重用(在每个项目的POM中重复最少)?
这是第五条路。我认为它有最小的缺点:没有概要文件,没有自定义生命周期,没有子POM中的声明,没有插件的‘跳过’要求。
从https://stackoverflow.com/A/14653088/2053580复制了它--非常感谢最终用户!
<build>
<pluginManagement>
<plugins>
<plugin>
<!-- Main declaration and configuration of the plugin -->
<!-- Will be inherited by children -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<!--This must be named-->
<id>checkstyle</id>
<phase>compile</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<!-- You may also use per-execution configuration block -->
<configuration...>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<!-- This declaration makes sure children get plugin in their lifecycle -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<!-- Configuration won't be propagated to children -->
<inherited>false</inherited>
<executions>
<execution>
<!--This matches and thus overrides execution defined above -->
<id>checkstyle</id>
<!-- Unbind from lifecycle for this POM -->
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
问题内容: 我使用的父POM定义了我不想在子POM中运行的插件。如何完全禁用子pom中的插件? 约束:我不能更改父POM本身。 问题答案: 在禁用子POM中的Findbugs时,以下对我有用: 注意:Findbugs插件的完整定义在我们的父/超级POM中,因此它将继承该版本等。 在Maven 3中,您需要使用: 用于插件。
Maven插件及其在父pom中定义的依赖项,我不希望我的子pom包含该插件依赖项。 例如,如果有1个父级和100个子级,99个使用该插件并希望在一个子级中排除该插件。 我们如何才能实现这一目标?
我正试着做一个包含所有项目的胖uber罐子。如果我做了“MVN包”,我得到一个uber jar下的“blah”项目标签文件夹。(blah项目有主类。)uber jar包含所有项目(作为文件夹而不是jar),但当我运行它时,它似乎无法识别feature1和feature2项目。 我在上面添加了feature1和feature2的依赖项,以便它们在uber jar文件中。这错了吗?附注。blahmes
我们有一个公司范围的Super Pom,用于定义我们使用的许多默认值。例如,Super Pom定义要使用的JDK版本以及其他参数。这由我们的项目继承为父pom。 我们的大多数项目都使用JDK1.7,但有一组项目仍在JDK1.6版本上。我在我的父母pom中添加了以下配置文件定义: 现在,我有一个名为的配置文件,我想在项目的pom中指定它应该默认使用这个。我该怎么做? 我尝试在项目的pom中添加: 但
多项目Gradle构建中的子项目如何使用根项目的buildSrc文件夹中定义的Gradle插件? 我基本上有: 设置。格拉德尔 buildSrc/src/main/groovy/com/example/conventions/JavaConventionsPlugin。groovy buildSrc/build。格拉德尔 通用/构建。格拉德尔 我正在尝试在项目中应用插件: 但是上面说 id为“co
本文向大家介绍在SpringBoot项目中利用maven的generate插件,包括了在SpringBoot项目中利用maven的generate插件的使用技巧和注意事项,需要的朋友参考一下 使用maven 插件 generate生成MyBatis相关文件 在项目中增加 maven 依赖 - mybatis-spring-boot-starter - mysql-connector-java -