Maven: execute antrun task during package

2019-07-17 10:43发布

我需要使用Maven antrun插件Hibernate的字节码测试添加到我的一个Java类,以使各个领域的延迟加载。 但是,我不能让插件去构建周期中执行。

我怎么能指示的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的文档 ,它不会出现了“处理类”相是为构建循环的一部分package 。 我可以运行自己的使用插件mvn antrun:run ,但由于在最后,我需要做的mvn package生产部署.war文件,我相当肯定,这个插件需要在包装任务内的某个地方执行为了修改后的类放入打包的.war。

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

Answer 1:

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

为了使它工作,你应该这样移动到<build> -> <plugins>你的pom.xml的部分。



文章来源: Maven: execute antrun task during package