一尘不染

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

hibernate

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

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

当前的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中。

我尝试了上述代码的许多变体(更改阶段,更改,更新插件的版本,更改ID等),但没有明显的变化。我已经运行mvn-e -X可显示所有可能的输出,antrun插件从来不管我怎么努力执行。任何帮助将不胜感激。


阅读 233

收藏
2020-06-20

共1个答案

一尘不染

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

为了使其正常工作,您应该将其移至<build> -> <plugins>pom.xml的部分。

2020-06-20