Я застрял в разработке сценария на основе awk для анализа номера версии родительского поля в файле pom.xml и обновления с номером версии замены на это родительское поле в том же файле.
Примечание
awk --version
GNU Awk 4.0.2
Copyright (C) 1989, 1991-2012 Free Software Foundation.
Я разработал 98% сценария, я даже получаю правильный / требуемый результат на экране, но я не мог понять, как написать его каквесь файл с приложенным обновлением версии.
Вывод моего скрипта
Artifact id : xmp_job_manager
Found Version : 18.1.1
Replaced Version : 3.700.20011
Пример кода
#Author : Vivin Neelankavil
#upvote my post if you find it useful
awk '/parent/, /\/parent/ {
artifact[1]="xmps_job_manager"
artifact[2]="xmp_job_manager"
version[1]="3.700.200"
version[2]="3.700.20011"
if($1 ~ /^<artifactId/)
{
d=substr($1,13,(length($1)-25))
print "Artifact id : " d
for(j=1;j<=4;j++)
{
if(d==artifact[j])
{
getline
if($1 ~ /^<version/)
{
c=substr($1,10,(length($1)-19))
print "Found Version : " c
gsub('c',version[j],$1)
k=substr($1,10,(length($1)-19))
print "Replaced Version : " k
}
}
}
}
}' pom.xml
Мне потребуется обновить файл pom.xml с замененным номером версии, как показано ниже
До
<name>Job Manager Implementation</name>
<packaging>bundle</packaging>
<description>Job Manager Implementation</description>
<parent>
<groupId>com.cisco.xmp</groupId>
<artifactId>xmp_job_manager</artifactId>
<version>18.1.1</version>
</parent>
<properties>
<xmp.xmp_usermgmt.version>18.1.1</xmp.xmp_usermgmt.version>
После
<name>Job Manager Implementation</name>
<packaging>bundle</packaging>
<description>Job Manager Implementation</description>
<parent>
<groupId>com.cisco.xmp</groupId>
<artifactId>xmp_job_manager</artifactId>
--> <version>3.700.200</version>
</parent>
<properties>
<xmp.xmp_usermgmt.version>18.1.1</xmp.xmp_usermgmt.version>