Java Maven:在打包期间执行antrun任务

Java Maven:在打包期间执行antrun任务,java,hibernate,maven,maven-antrun-plugin,Java,Hibernate,Maven,Maven Antrun Plugin,我需要使用Maven antrun插件将Hibernate字节码插装添加到我的一个Java类中,以便能够延迟加载各个字段。但是,我无法在构建周期中执行插件 在编译之后,但在进行mvn包构建期间打包之前,我如何指示Maven执行antrun插件? 当前pom.xml(代码段): ... ,似乎“流程类”阶段不是包的构建周期的一部分。我可以使用mvn antrun:run自行运行插件,但由于最终我需要执行mvn package来生成一个.war文件以供部署,因此我相当确定该插件需要在包任务中的某个

我需要使用Maven antrun插件将Hibernate字节码插装添加到我的一个Java类中,以便能够延迟加载各个字段。但是,我无法在构建周期中执行插件

在编译之后,但在进行
mvn包构建期间打包之前,我如何指示Maven执行antrun插件?

当前pom.xml(代码段):


...
,似乎“流程类”阶段不是
包的构建周期的一部分。我可以使用
mvn antrun:run
自行运行插件,但由于最终我需要执行
mvn package
来生成一个.war文件以供部署,因此我相当确定该插件需要在包任务中的某个地方执行,以便将修改后的类放入packaged.war中


我已经尝试了上述代码的许多变体(更改阶段、使用、更新插件版本、更改id等),但没有任何可察觉的更改。我一直在用
-e-X
运行
mvn
,以显示所有可能的输出,无论我怎么尝试,antrun插件都不会执行。任何帮助都将不胜感激

显然,问题在于您的
antrun
插件配置位于
pluginManagement
部分,而不是
plugins
部分。你可以在我的回答中看到这两个部分之间的区别


要使其工作,您应该将其移动到pom.xml的
->
部分。

此配置位于哪个部分(
plugins
pluginManagement
)中?它位于
pluginManagement
中。我会把它添加到文章的pom片段中,这就是原因。它永远不会被执行。请参阅我的答案以了解这些部分之间的差异。您应该将其移动到
->
。很有趣,谢谢您的解释。我最初在
中没有外部
标记,但我的IDE抱怨(Eclipse,“生命周期配置未涵盖插件执行”),我找到了另一个答案(我丢失了链接),这表明问题可以通过添加
pluginManagement
外部标记来解决。在删除标记后,我刚刚尝试从命令行运行
mvn package
,这将正确执行任务。我的IDE仍然在抱怨,但只要它能工作就行了。谢谢如果你留下一个答案,我会把它标记为正确的。
<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>