我正在开发使用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文件中,则可以通过从xml文件读取数据并将其存储为XML文档对象,在PowerShell中执行此操作。您可以使用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)
}
}