我需要使用 Maven antrun 插件将 Hibernate 字节码检测添加到我的 Java 类之一,以便启用各个字段的延迟加载。但是,我无法让插件在构建周期中执行。
如何指示 Maven 在编译之后、打包之前执行 antrun 插件mvn package
build?
当前的 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>
我看到的有关此问题的所有文档都显示该插件被配置为在“进程类”阶段运行。然而,从 Mavendocs,“流程类”阶段似乎不是构建周期的一部分package
。我可以使用它自己运行该插件mvn antrun:run
,但因为最终我需要做mvn package
要生成用于部署的 .war 文件,我相当确定该插件需要在包任务中的某个位置执行,以便将修改后的类放入打包的 .war 中。
我尝试了上述代码的许多变体(更改阶段、更改 with 、更新插件版本、更改 id 等),但没有明显的更改。我一直在跑步mvn
with -e -X
显示所有可能的输出,并且无论我尝试什么,antrun 插件都不会执行。任何帮助将不胜感激。
显然,问题在于你的antrun
插件配置位于pluginManagement
部分而不是plugins
部分。您可以在我的回答中看到这两个部分之间的区别here.
为了使其正常工作,您应该将其移至<build> -> <plugins>
pom.xml 的部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)