java - 如何递归更新 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-SNAPSHOT
groupId
org.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)
}
}
推荐阅读
- python - 如何使用 Tweepy 在特定日期获取推文?
- javascript - 机器人删除不是该文本通道中命令的消息
- leaflet - 如何使用 Leaflet 在两个标记之间创建折线偏移?
- python - 根据名称模式查找特定文件的代码 - break 命令的问题
- javascript - Rails 6 应用程序使用 Yarn (webpacker) 安装 Glide.js - 未捕获的 ReferenceError: Glide 未定义
- sql - 如何正确转义 SQL“LIKE”运算符的用户输入?(Postgres)
- python - 如何打印正方形的两条对角线?
- matlab - 我试图在 matlab 中绘图,但 matlab 绘图不起作用
- git - 如何使用自定义消息 git stash 未跟踪的文件?
- c - 强制缓冲区在 scanf 中清除