使用 Gradle 从现有 pom.xml 文件中读取信息?

2023-11-26

在蚂蚁金服中Maven Ant 任务可用于读取 Maven 属性,如下所示:

<artifact:pom id="mypom" file="pom.xml" />
<echo>The version is ${mypom.version}</echo>

Gradle 中是否有“本机”支持用于从现有物理 pom.xml 文件访问 pom 元素,或者我是否需要在 .gradle 文件中执行上述 Ant 方法才能完成此工作?

这一页:

http://gradle.org/docs/current/userguide/maven_plugin.html

有关于生成 pom 文件的信息,但这不是我要找的。我尝试创建一个具有相同功能的 .gradle 文件:

    repositories {
      mavenCentral()
    }

    configurations {
        mavenAntTasks
    }

    dependencies {
        mavenAntTasks 'org.apache.maven:maven-ant-tasks:2.1.1'
    }

    task hello << {
      ant.taskdef(resource: 'org/apache/maven/artifact/ant/antlib.xml',
                  uri: 'antlib:org.apache.maven.artifact.ant',
                  classpath: configurations.mavenAntTasks.asPath)

     // what is the gradle syntax for this:
     // <artifact:pom id="mypom" file="maven-project/pom.xml" />
     // its not a property or a task...
     def artifact = groovy.xml.NamespaceBuilder.newInstance(ant,'antlib:org.apache.maven.artifact.ant')
     artifact.pom(id:'mypom', file: 'pom.xml')
     def text = properties['mypom.version']
     println "From pom file: " + text 

    }

我在 build.gradle 文件旁边有一个简单的 pom.xml 文件。但我在 gradle 文档中找不到有关此任务的相应 ant 调用的任何信息。我看过:

http://www.gradle.org/docs/current/userguide/ant.html

有关如何读取 ant 属性和引用的信息,但是:

<artifact:pom id="mypom" file="maven-project/pom.xml" />

似乎既不是属性也不是参考。我偶然发现了这个页面:

http://snipplr.com/view/4082/

where a 命名空间生成器用来:

 def mvn = groovy.xml.NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant')

但是当使用这种方法时我得到:

The AbstractTask.getDynamicObjectHelper() method has been deprecated and will be removed in the next version of Gradle. Please use the getAsDynamicObject() method instead.
From pom file: null

经过一番谷歌搜索后我发现:

http://issues.gradle.org/browse/GRADLE-2385

这似乎相关,但属性的值仍然为空。


Gradle 不提供解析 POM 文件的本机支持,但 Groovy 的XmlSlurper使 XML 解析变得简单方便。与 Ant 方法相比,我可能更喜欢这种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gradle 从现有 pom.xml 文件中读取信息? 的相关文章

随机推荐

  • 从python脚本访问django数据库

    我正在尝试从常规 Python 脚本中访问我的 Django 数据库 到目前为止我所做的是 import os import django from django db import models os environ setdefault
  • MailComposer didFinishWith 结果在 Swift 3.0 中不起作用

    我将我的应用程序转换为 swift 3 0 并遇到问题MailComposeController 当我调用函数时 func mailComposeController controller MFMailComposeViewControll
  • 在 Google Apps 脚本中从服务器到客户端进行通信

    我正在尝试编写一个具有客户端和服务器端组件的 Google Apps 脚本 客户端组件显示进度条 客户端调用服务器端函数 异步调用 其进度必须显示在客户端进度栏中 现在 我想要的是能够根据服务器端功能的反馈来更新客户端进度条 这可能吗 由于
  • 获取容器的 docker run 命令

    我有一个我创建的容器 但我不记得确切的内容docker run我用来启动它的命令 有什么办法可以找回吗 这与查看 Docker 中运行 停止容器的完整命令我想知道的是生成容器的完整 docker 命令 而不是容器内的命令 您可以通过查看输出
  • Matplotlib 中的非线性第二轴

    我想知道如果没有任何解析公式 是否有一种方法可以在 Matplotlib 中添加第二个非线性 x 轴 或者简化是否有办法为原始 x 轴中的每个数字创建不同的标签 下图解释了我正在寻找的内容 不幸的是类似question之前已被问过但未得到答
  • 如何在Java中使用Collections.sort()?

    我得到了一个物体Recipe实现Comparable
  • 需要在每个 cron 作业之前设置 rvm 环境

    我大致按照这组说明的第一部分中概述的模式安装和配置 RVM http blog ninjahideout com posts a guide to a nginx passenger and rvm server 基本上 这意味着没有预构建
  • 带有单击事件处理程序的 WPF 命令

    当我使用Command in a Button控制加入的事件处理程序Click事件永远不会引发 我怎样才能使用Command并处理Click事件处理程序 您可以将 ICommand 附加到另一个属性并从 Click 处理程序中执行它
  • Chrome DevTools - 性能选项卡摘要

    在 Chrome DevTools 的 性能 选项卡上 摘要 面板显示多个活动类别的计时 加载 脚本编写 渲染 绘画 系统 空闲 我似乎无法在 DevTools 文档中找到每个类别所代表的内容的简明描述 我觉得我必须忽略一些显而易见的事情
  • 如何将两个div并排放置? [复制]

    这个问题在这里已经有答案了 考虑以下代码 wrapper width 500px border 1px solid black first width 300px border 1px solid red second border 1px
  • 如何将 package.json 数组传递给 grunt.js

    有没有办法将数组从 package json 文件传递 给 grunt js 我尝试了几种不同的方法 但似乎都不起作用 我目前有 global module false module exports function grunt Proje
  • 如何制作模块向量?

    我想实例化一个一维元素数组 并且元素扩展模块 我该怎么做 如果我说我最好的猜测 那就是 val elements Vec 64 new element 我收到以下错误消息 error Users mykland work chisel ar
  • 如何从 PHP 调用 Perl 脚本?

    我有兴趣了解如何在 PHP 中调用 运行 Perl 脚本 您可以在 Php 代码中使用简单的 Php Perl 扩展 这将允许您执行代码和 Perl 变量 函数以及实例化对象 perl new Perl perl gt require te
  • 如何在启动repl时默认加载ns

    我用的是lein2 我想在 repl 启动时默认加载一些 ns 当为该项目执行 lein2 repl 时 是否可以在 project clj 中指定应加载的 ns 你会在其中找到很多答案示例项目 Options to change the
  • Bootstrap:在标签内输入

    为了避免表单上的每个输入元素都有一个 ID 我想将表单输入放在label 引导程序 3 我的问题是 这导致行之间有额外的垂直间距 输入没有填充其父级的整个宽度 并且输入未对齐
  • 使用UINT64_C的目的?

    我在 boost 源中找到了这一行 const boost uint64 t m UINT64 C 0xc6a4a7935bd1e995 我想知道这里使用宏的目的是什么 这一切所做的就是添加ULL到提供的常数 我认为它可能会被用来让人们更难
  • 剃须刀要求;当使用(Html.BeginForm())时

    using Html BeginForm Name Html TextBoxFor o gt o Name
  • C# 中的拍手声检测

    我希望能够检测到拍手声 对于任何形式的声音识别都很陌生 有什么简单的方法可以做到这一点吗 如果没有 有什么好的 C 声音识别 检测资源吗 我的目标是通过一些基本的基于拍手的控制来实现客户媒体中心的自动化 以前也有人问过类似的问题 给定音频流
  • NoSuchMethodException: springframework.boot.autoconfigure.http.HttpMessageConverters

    我想将 Java 9 与 Spring 一起使用 但我得到例外 Caused by org springframework aop framework AopConfigException Unable to instantiate pro
  • 使用 Gradle 从现有 pom.xml 文件中读取信息?

    在蚂蚁金服中Maven Ant 任务可用于读取 Maven 属性 如下所示