2014-03-30 123 views
0

我寫了一個自定義插件,然後我安裝了它。然後我修改了我想使用自定義插件的項目的pom.xml。當我直接調用我的插件目標時,插件目標成功執行,但是當我嘗試mvn compile我的自定義插件目標未被執行時。可能是什麼原因?Maven默認編譯沒有選擇自定義插件目標

我插件的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.xxx.plugins.maven</groupId> 
    <artifactId>datanucleus-enhance-maven-plugin</artifactId> 
    <packaging>maven-plugin</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>Datanucleus-enhance Maven Plugin</name> 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.maven.plugin-tools</groupId> 
     <artifactId>maven-plugin-annotations</artifactId> 
     <version>3.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-plugin-api</artifactId> 
     <version>2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
</project> 
我加

我的項目中使用自定義插件如下:

<!-- enhance JDO classes --> 
    <plugin> 
     <groupId>com.sukantu.plugins.maven</groupId> 
     <artifactId>datanucleus-enhance-maven-plugin</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <configuration> 
     <jdoClassDirList> 
      <param>target/${project.artifactId}-${project.version}/WEB-INF/classes/</param> 
     </jdoClassDirList> 
     </configuration> 
     <executions> 
      <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>enhance</goal> 
      </goals> 
      </execution> 
     </executions> 
    </plugin> 

我跟着段從行家指南網站裝上的Mojo到構建生命週期https://maven.apache.org/guides/plugin/guide-java-plugin-development.html

以下命令成功調用我的插件目標: mvn com.xxx.plugins.maven:datanucleus-enhance-maven-plugin:enhance

下面的命令沒有成功打電話給我的插件目標: mvn compile

感謝任何投入!

+0

你在哪裏定義了插件配置? //? –

+0

我之前嘗試使用pluginManagement,但後來發現如何解決此問題。請參閱我發佈的答案。謝謝。 – CoolDude

回答

1

我遇到了這個鏈接: How do I link a plugin execution to a phase in maven without forcing me to specify plugin on command line

所以我刪除<pluginManagement>標籤,以便<plugins>直接出現在 '<build>'。然後我嘗試從命令行'mvn compile',它成功地調用了我的自定義插件目標!

但是,當我在Eclipse中檢查pom.xml時,看到了另一個錯誤How to solve 「Plugin execution not covered by lifecycle configuration」

由於命令行工作正常,我認爲這是m2e Eclipse插件錯誤,所以我已禁用標記爲'Eclipse' - >'Window' - >'Show View' - >'Markers' - >右鍵點擊那個標記 - >'刪除'。現在Eclipse沒有顯示任何錯誤,命令行也按預期工作。希望這可以幫助別人。

相關問題