Форум сайта python.su
0
Доброго времени суток, прошу помощи/совета по такому вопросу: имеется локальный репозиторий( по сути обычная папка на диске), в нем лежит родительский pom.xml и несколько подпапок дочерних модулей в каждой из которых также лежит свой pom.xml. Все помники связаны между собой и изменение версии модуля в корневом pom.xml, например с <version-api>1.0</version-api> на <version-api>2.0</version-api> влечет за собой необходимость изменять эту версию в каждом дочернем помнике, в котором она упоминается, что приходится делать вручную. Т.е. нужно чтобы скрипт анализировал каждый xml в корневой директории и поддиректориях, и при обнаружении тега <version-api> менял значение в нем та тоже что и в корневом помнике. На текущий момент получилось реализовать изменение значения версии только в корневом pom.xml, как поменять версию по всем остальным xml в подпапках не знаю.
import xml.dom.minidom
import xml.etree.ElementTree as ET
import os
import sys
dom = xml.dom.minidom.parse(“pom.xml”);
dom.normalize()
version=dom.getElementsByTagName(“version-api”)
print(“name=”+version.nodeName)
print(“value=”+version.childNodes.nodeValue)
a=str(input(“Введите название артефакта:”))
print(a)
b=str(input(“Введите версию артефакта:”))
print(b)
tree = ET.parse('pom.xml')
root = tree.getroot()
for elem in root.iter(a):
elem.text = (b)
tree.write('pom.xml')
node2=dom.getElementsByTagName(“node2”)
print(“name=”+version.nodeName)
print(“value=”+version.childNodes.nodeValue)
Офлайн
857
Надо сделать скрипт замены версии в любом файле (он принимает путь к файлу ввода, номер версии, путь к файлу вывода). Потом надо сделать второй скрипт, который обходит директории рекурсивно, отыскивает нужные файлы и применяет к каждому файлу первый скрипт. При этом для каждого файла сначала создаётся выходной файл рядом и только после его записи входной файл стирается, а выходной переименовывается на его место.
Почему нужно разделить скрипты - потому что второй скрипт можно применять и с использованием других скриптов. В идеале у второго скрипта должен быть параметр, в который передаётся путь к первому скрипту. Таким образом во второй скрипт можно подать скрипт обновления поля версии, а можно подать скрипт обновления поля автора, а можно подать скрипт полной конвертации документа.
Отредактировано py.user.next (Апрель 8, 2019 23:45:15)
Офлайн