java - 如何在 pom.xml 中递归更新依赖版本

标签 java git powershell maven pom.xml

我正在开发使用 maven 的开源插件。没有父子层次结构,当前工作目录中的所有 Maven 项目都相互独立,并且托管在 git 上。我所有的插件都有一个共同的依赖项,我现在正在手动更新它。

<dependencies>
  <dependency>
    <groupId>org.projectA</groupId>
    <artifactId>agent-api</artifactId>
    <version>0.13.4-SNAPSHOT</version>
    <scope>provided</scope>
  </dependency>
  ..............
 <dependencies>

有人能帮我吗,有没有maven方式或powershell方式或git方式来更新依赖版本递归更新所有我当前工作目录中的项目版本为 0.13.5-SNAPSHOTgroupIdorg.projectA

最佳答案

如果您的数据位于 xml 文件中,您可以在 PowerShell 中执行此操作,方法是从 xml 文件中读取数据并将其存储为 XML 文档对象。您可以将其与 Get-ChildItem 组合使用,以查找指定路径中的所有 xml 文件。

$xml = [xml](Get-Content pom.xml)
$xml.dependencies.dependency.where({$_.groupId -eq "org.projectA"}) |
   ForEach-Object {
      $_.version="0.13.5-SNAPSHOT"
   }
$xml.Save("c:\temp\pom-updated.xml")

在上面的示例中,我正在从源文件 pom.xml 中读取 xml 数据。然后将更新后的 xml 对象存储在 pom-updated.xml 中。我相信 Save() 方法需要输出文件的完整路径。

要遍历所有文件并用更新的值覆盖文件,您可以执行以下操作:

foreach ($xmlFile in (Get-ChildItem -Path "c:\temp\test1" -recurse -include "*.xml" -File)) {
    $xml,$xmlNodes = $null
    $xml = [xml](Get-Content $xmlFile.fullname)
    $xmlNodes = $xml.SelectNodes("//dependency").where({$_.groupId -eq "org.projectA"})
    if ($xmlNodes) {
        $xmlNodes | ForEach-Object { $_.version = "0.13.5-SNAPSHOT" }
        $xml.Save($xmlFile.fullname)
    }
}

关于java - 如何在 pom.xml 中递归更新依赖版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907219/

相关文章:

javascript - Javascript 中的 Nan 与 JDK8 上的 javax.scriptEngine 的比较

PowerShell安装模块命令没有失败但没有安装模块

powershell - 通过 powershell 在 jenkins 中使用 AnsiColor

powershell - 查找哪个哈希表键值

java - 从终端编译这个 Lanterna Maven 项目需要什么?

Java Swing - 将 JLabel 中的图像放置到/高于第二个 JLabel( map 、播放器指示器)

java - Spring 启动 : Change property placeholder signifier

git - 智能 : Viewing diff of all changed files between local and a git commit/branch

git - 如何在不同对应的本地分支package.json中使用单独的git分支作为npm包依赖?

windows - Git diff 在窗口 git bash shell (Windows) 中损坏