Как рекурсивно обновить версию зависимости в pom.xml - PullRequest
2 голосов
/ 29 апреля 2019

Я работаю над разработкой плагинов с открытым исходным кодом, которые используют 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 is org.projectA

1 Ответ

0 голосов
/ 29 апреля 2019

Вы можете сделать это в PowerShell, если ваши данные находятся в XML-файлах, считав ваши данные из 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")

В приведенном выше примере я читаю данные xml из исходного файла pom.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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...