是否可以在停用的父POM中定义一个插件,并且当孩子继承此插件时它会自动激活?在Maven中自动激活父插件
回答
我猜你要配置的插件,在父POM ,但只能在继承的项目中使用它。 Maven为此提供了一个小节 - 在pluginManagement中配置插件,但在需要时将它们绑定到一个阶段,例如,省略pluginManagement中的阶段标签,但在您继承的pom下指定它。
据我所知,没有通用的解决方案。至少目前...
一个想法(我没有尝试过,但它可能工作)是在父pom.xml中定义一个不存在的执行目标,例如:
<executions>
<execution>
<goals>
<goal>noGoal</goal>
</goals>
</execution>
</executions>
并在每个孩子,你重新定义一个正确的目标。
这个解决方案的问题(如果它工作,当然;))是你必须重新定义每个孩子的插件配置。否则,它不会被执行。
是的,我想过类似的东西,但你说的这个办法的缩减是,我有在每个我不想做的孩子中进行配置。 – kukudas 2009-01-30 12:44:56
你可以在顶层pom声明一个插件并告诉它被跳过,然后告诉它不要在子级跳过。它不是很自动的,但在覆盖详细程度上非常小。
父POM,禁用插件,但宣布所有的配置:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<configuration>
<skip>true</skip>
...lots more config...
...lots more config...
...lots more config...
</configuration>
</plugin>
儿童POM,使插件:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<configuration>
<skip>false</skip>
</configuration>
</plugin>
不幸的是,这只有在各个插件提供“skip”作为配置时才有效。 不是所有的插件都可以! – jbandi 2009-08-18 09:27:06
这不完全是你所追求的,但我认为它对你来说足够好。
如果您在父级的pluginManagement标记中声明插件,则配置将由声明该插件的任何子项目继承。
例如,在父级声明编译插件使用Java 5进行测试编译。
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>test-compile</id>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
然后在一个孩子,你简单的声明编译器插件,并从父配置将被继承:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
</plugins>
</build>
所以“siddhadev”是完全正确的。您可以通过给定id定义父POM的插件配置:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>child-caller</id>
<!-- 'phase' omitted -->
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo message="called from child!" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
而且,在孩子POM,你可以明确地列出其中这应该被称为相:
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>child-caller</id>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
我已经用它来定位各种JRE。不幸的是,因为你不能使用具有不同目标目录的maven-compiler-plugin(我认为这是插件中的一个bug),所以你必须使用Ant。
我去了以下解决方案:
配置在pluginManagement节的家长聚甲醛插件。将插件绑定到现有阶段。
通过将其结合到一个不存在的阶段停用父,聚甲醛插件:在插件截面重写相。
通过在插件部分插件激活每个孩子-POM的插件。
例父-POM:
<defaultGoal>install</defaultGoal>
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-ejb-client</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${ejb-client-file}</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>jar</packaging>
<classifier>client</classifier>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</pluginManagement>
<plugins>
<plugin>
<!-- deactivate the plugin for this project, only child-projects do generate ejb-clients -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>install-ejb-client</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
例儿童-POM:
<build>
<plugins>
...
<plugin>
<!-- Install the generated client-jar. Property 'ejb-client-file' has to be set! Plugin configuration is in the parent pom -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
</plugin>
...
</plugins>
</build>
- 1. 在NetBeans中自动激活插件
- 2. Sublime - 激活/取消激活 - 自动保存修改 - 插件
- 3. 在Intellij IDEA中自动激活maven配置文件
- 4. 在Eclipse中自动激活
- 5. 如何在主题WordpressMu中自动激活插件?
- 6. 在自动激活PHP
- 7. addEventListener“激活”自动
- 8. wordpress插件自定义激活信息
- 9. 如何在插件激活时在wordpress中移动文件
- 10. 该插件没有在VueJS中激活
- 11. 仅在父项中运行maven插件
- 12. 重定向插件激活
- 13. Eclipse插件激活器类
- 14. wordpress插件激活错误
- 15. 激活类文件中的tweenlite插件
- 16. Windows自动激活方法
- 17. Maven的高管,插件的pom.xml定义:激活字符
- 18. Maven的激活每次
- 19. 从儿童活动中激发父事件Visual Studio
- 20. 如何在内部激活wordpress插件?
- 21. 激活Maven配置文件,如果没有其他配置文件激活
- 22. 工作簿激活/取消激活时检测 - OfficeJS插件
- 23. 在iBook中自动激活html5小部件
- 24. C#激活手动事件
- 25. 如何禁用激活电子邮件和自动激活博客
- 26. 创建新用户的插件(在插件激活时)
- 27. 使用jgitflow Maven插件完成发布时激活配置文件?
- 28. 激活WordPress插件后显示消息
- 29. 激活wordpress插件打破jQuery效果
- 30. 如何获得激活插件?
这比Rich Steller的回答更好吗(http://stackoverflow.com/questions/495314/automatically-activate-parent-plugin-in-maven/1209728#1209728)?这种方法比使用pluginManagement部分有什么好处? – 2011-03-23 01:42:11