我需要使用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插件都不會執行。任何幫助將不勝感激。
該配置位於哪個部分('plugins'或'pluginManagement')? –
它在'pluginManagement'中。我會將其添加到帖子中的pom片段。 –
這就是原因。它永遠不會被執行。看到我的答案[這裏](http://stackoverflow.com/questions/13959358/where-should-be-placed-maven-compiler-plugin-declaration-in-plugins-or-plugi/13959711#13959711)瞭解這些部分之間的區別。你應該把它移動到' - >'。 –