是否可以在停用的父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. 插件在WordPress自動插件更新後被取消激活
- 5. 在Eclipse中自動激活
- 6. 如何在主題WordpressMu中自動激活插件?
- 7. Maven激活配置文件
- 8. 在自動激活PHP
- 9. addEventListener「激活」自動
- 10. 僅通過激活在父POM中運行Maven目標
- 11. wordpress插件自定義激活信息
- 12. 如何在激活wordpress主題時自動安裝wordpress插件?
- 13. 如何在插件激活時在wordpress中移動文件
- 14. 如何在Firefox中激活Java插件?
- 15. 該插件沒有在VueJS中激活
- 16. 通過配置文件激活/停用sonar maven插件?
- 17. 在tcl中激活自動完成
- 18. 自動構建Maven插件
- 19. 僅在父項中運行maven插件
- 20. 重定向插件激活
- 21. Eclipse插件激活器類
- 22. wordpress插件激活錯誤
- 23. jQuery插件激活錯誤
- 24. 激活類文件中的tweenlite插件
- 25. 方法自動激活
- 26. 自動激活寶IPN
- 27. 激活Flex自動化庫
- 28. Windows自動激活方法
- 29. Maven的高管,插件的pom.xml定義:激活字符
- 30. Maven的激活每次
這比Rich Steller的回答更好嗎(http://stackoverflow.com/questions/495314/automatically-activate-parent-plugin-in-maven/1209728#1209728)?這種方法比使用pluginManagement部分有什麼好處? – 2011-03-23 01:42:11