我需要使用Maven antrun插件将Hibernate字节码检测添加到我的Java类之一中,以便启用各个字段的延迟加载。但是,我无法让插件在构建周期内执行。
我如何指示Maven在编译后但在mvn package构建期间打包之前执行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 文档看来,“ process- classes”阶段似乎不是的构建周期的一部分package。我可以使用单独运行该插件mvn antrun:run,但是由于最后我需要mvn package生成一个.war文件以进行部署,因此我可以肯定,此插件需要在package任务中的某个位置执行才能放置修改后的类放入打包的.war中。
package
mvn antrun:run
我尝试了上述代码的许多变体(更改阶段,更改,更新插件的版本,更改ID等),但没有明显的变化。我已经运行mvn与-e -X可显示所有可能的输出,antrun插件从来不管我怎么努力执行。任何帮助将不胜感激。
mvn
-e -X
显然,问题出在您的antrun插件配置位于pluginManagement部分而不是plugins部分中。您可以在此处的答案中看到这两个部分之间的区别。
antrun
pluginManagement
plugins
为了使其正常工作,您应该将其移至<build> -> <plugins>pom.xml的部分。
<build> -> <plugins>