当前位置: 首页 > 面试题库 >

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

曾翰飞
2023-03-14
问题内容

我需要使用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插件从来不管我怎么努力执行。任何帮助将不胜感激。


问题答案:

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

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



 类似资料:
  • 问题内容: 我的maven java项目使用maven-antrun-plugin执行部署我的应用程序的deploy.xml ant脚本。deploy.xml使用该任务,这似乎是导致问题的原因。 [INFO]执行任务 [taskdef]无法从资源net / sf / antcontrib / antlib.xml加载定义。找不到。 部署: [INFO] ----------------------

  • 我有一个maven(多模块)项目,为JBoss AS 7.1.x创建一些WAR和EAR文件。 出于一个目的,我需要将一个模块的一个生成的EAR文件部署到一个新的JBoss实例并运行它,对它调用一些REST web服务调用并停止JBoss。然后,我需要将这些调用的结果打包并写入数据库。 目前,我正在尝试使用CARGO和专家蚂蚁运行插件来执行此任务。 不幸的是,我不能让三个(maven、ant run

  • 问题内容: 如何使用Maven打包一个可执行jar包? 问题答案: 然后用 编译目标应该在Assembly:single:single之前添加,否则不包括你自己项目中的代码。 在评论中查看更多详细信息。 通常,此目标与自动执行的构建阶段相关。这样可以确保在执行mvn install或执行部署/发布时构建JAR 。

  • 执行周期性任务也是一样简单,您只需要编写一行代码: RecurringJob.AddOrUpdate(() => Console.Write("Easy!"), Cron.Daily); 此行在持久存储中创建一个新实体。 Hangfire Server中的一个特殊组件(请参阅 处理后台任务) 以分钟为间隔检查周期性任务,然后在队列中将其视作 fire-and-forget 任务。这样就可以照常跟踪

  • 我有一个POM文件(由Eclipse执行),我想在阶段执行一个ANT任务。基于m2e文档,在如何解决Spring Data Maven Builds的“生命周期配置未涵盖的插件执行”中,Maven:在打包期间执行antrun任务,以及Maven编译器插件声明的位置:in 我从阅读中了解到,我要求告诉Maven以下内容:首先要求Maven的Eclipse插件(m2e)允许maven-antrun-p

  • 本文向大家介绍spring boot打包成可执行jar包,包括了spring boot打包成可执行jar包的使用技巧和注意事项,需要的朋友参考一下 在使用spring boot进行打包的时候出现了一些问题,不是说找不到主类,就是说spring初始化时有些类没有加载。 下面介绍一下如何解决。 这样就能够打出jar包了。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。