Jenkins Maven - Ant BuildException - task.properties 默认文件

Posted

技术标签:

【中文标题】Jenkins Maven - Ant BuildException - task.properties 默认文件【英文标题】:Jenkins Maven - Ant BuildException - task.properties default file 【发布时间】:2021-08-25 13:48:36 【问题描述】:

我在使用 maven antrun 插件时遇到问题。我可以使用任何开箱即用的 maven 编译我的多项目层 pom.xml,并使用自定义设置(添加私有 nexus 存储库)。

当我尝试使用相同的自定义设置在 Jenkins 构建上构建这个项目时,它总是失败:

main:
  [taskdef] Could not load definitions from resource task.properties. It could not be found.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (default) on project redacted: An Ant BuildException has occured: Problem: failed to create task or type resourceCheck
[ERROR] Cause: The name is undefined.
[ERROR] Action: Check the spelling.
[ERROR] Action: Check that any custom tasks/types have been declared.
[ERROR] Action: Check that any <presetdef>/<macrodef> declarations have taken place.

所有 *** 线程都是由于 antrun 插件或 build.xml 文件上的配置错误造成的,但此配置在数百台开发人员的笔记本电脑上,并且都按预期工作。

我在 Jenkins 上尝试了多个 maven 安装,多个版本,但都失败了,因为找不到文件 task.properties。

我问这是否隐藏在默认的 maven 元数据文件夹的某个地方,因为我在本地存储库和所有项目上到处搜索,但找不到这个文件,它仍然在数百台机器上编译(除了这个项目在多个生产系统上)。

有谁知道在与 Maven 相关的任何东西上可以在哪里找到 task.properties 默认文件?

编辑:这是插件在 pom 上的样子:

    <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <configuration>
                        <target>
                            <taskdef classpathref="maven.compile.classpath"
                                resource="task.properties" />
                            <resourceCheck>
                                <fileset dir="src/main/resources/metainfo">
                                    <include name="i3-label.properties" />
                                </fileset>
                                <checks>
                                    <include name="unicode check" />
                                    <include name="line end check" />
                                    <include name="empty key check" />
                                    <include name="placeholder check" />
                                    <include name="duplicate key check" />
                                    <include name="empty value check" />
                                    <include name="cross bundle check" /
                                </checks>
                            </resourceCheck>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

【问题讨论】:

第一个问题是:为什么要用maven-antrun-plugin?删除并使用默认的 Maven? 问候@khmarbaise,感谢您的回复。插件上有一些操作,关于 i3/18n 标签文件,不幸的是这是一个内部的大项目,已经在多个客户的生产系统上。这是 100 多个 pom 中需要的大重构。这里的重点是它适用于开箱即用的 maven 安装,但不知何故它在 jenkins 上就 antrun 插件失败了,而且 Jenkins 上的安装也是标准的开箱即用 maven。 【参考方案1】:

我发现了问题所在。如前所述,它不应​​该是任何 pom.xml 上的错误配置。在这种情况下,这是因为 Jenkins 上使用的设置中的 localRepository 定义。它被定义为

<localRepository>$env.mavenLocation\repository</localRepository>

虽然这适用于任何 Windows 工作站(即使没有定义 mavenLocation 环境变量,它只会创建一个名为 $env.mavenLocation 的文件夹,然后在其中创建一个存储库文件夹),但它不能在詹金斯工作。 Jenkins 成功使用 localRepository 位置来存储所有工件、pom 等,但这可能会阻止 maven 使用其默认属性。

我不确定为什么这会改变 maven 用来编译文件的“基本元数据”,但这绝对是问题所在。希望这可以帮助一些处于类似情况的人。

【讨论】:

以上是关于Jenkins Maven - Ant BuildException - task.properties 默认文件的主要内容,如果未能解决你的问题,请参考以下文章

jenkins--ant持续集成测试build文件脚本 测试报告

jenkins+svn+Ant+tomcat+非maven项目构建

Jenkins Maven - Ant BuildException - task.properties 默认文件

jmeter+ant+jenkins

CentOS7.0 部署Tomcat+jenkins+git+maven+ant

CentOS7.0 部署Tomcat+jenkins+git+maven+ant