2012-12-19 41 views
4

我需要使用Maven antrun插件將Hibernate字節碼工具添加到其中一個Java類中,以啓用單個字段的延遲加載。但是,我無法讓插件在構建週期中執行。Maven:包期間執行antrun任務

如何指示Maven在編譯之後但在打包期間執行antrun插件mvn package構建?

當前的pom.xml(片段):

<pluginManagement> 
    <plugins> 
    ... 
     <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <inherited>false</inherited> 
      <executions> 
       <execution> 
        <id>default-cli</id> 
        <configuration> 
         <target> 
          <echo message="Running instrumentation task"/> 
          <taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask"> 
           <classpath> 
            <path refid="maven.dependency.classpath" /> 
            <path refid="maven.plugin.classpath" /> 
           </classpath> 
          </taskdef> 
          <instrument verbose="true"> 
           <fileset dir="target/classes"> 
            <include name="**/UploadedFile.class" /> 
           </fileset> 
          </instrument> 
         </target> 
        </configuration> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-core</artifactId> 
        <version>${hibernate.version}</version> 
       </dependency> 
       <dependency> 
        <groupId>org.javassist</groupId> 
        <artifactId>javassist</artifactId> 
        <version>${javassist.version}</version> 
       </dependency> 
       <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-simple</artifactId> 
        <version>${org.slf4j-version}</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
    ... 
    </plugins> 
</pluginManagement> 

所有我看到關於這個問題的文件顯示了插件被設置在「工藝類」階段運行。但是,從Maven docs,似乎並沒有看到「過程類」階段是package的構建週期的一部分。我可以使用mvn antrun:run自己運行該插件,但由於最終我需要執行mvn package以生成用於部署的.war文件,因此我相當肯定此插件需要在軟件包任務內的某個位置執行以便放置修改後的類放入打包的.war中。

我已經嘗試了上面的代碼(改變階段,更改,更新插件的版本,更改ID等)的許多變化,沒有可察覺的變化。我一直在運行mvn-e -X來顯示所有可能的輸出,並且無論我嘗試什麼,antrun插件都不會執行。任何幫助將不勝感激。

+0

該配置位於哪個部分('plugins'或'pluginManagement')? –

+0

它在'pluginManagement'中。我會將其添加到帖子中的pom片段。 –

+0

這就是原因。它永遠不會被執行。看到我的答案[這裏](http://stackoverflow.com/questions/13959358/where-should-be-placed-maven-compiler-plugin-declaration-in-plugins-or-plugi/13959711#13959711)瞭解這些部分之間的區別。你應該把它移動到' - >'。 –

回答

5

顯然,問題在於你的antrun插件配置位於pluginManagement部分而不是plugins部分。您可以在我的回答here中看到這兩部分之間的區別。

爲了使它工作,你應該將它移動到你的pom.xml的<build> -> <plugins>部分。

相關問題