Как я могу изменить это:
...
<dependencies>
...
<dependency>
<groupId>xyz</groupId>
<artifactId>abc</artifactId>
</dependency>
...
</dependencies>
...
к тому, что:
...
<dependencies>
...
<dependency>
<groupId>xyz</groupId>
<artifactId>abc</artifactId>
<scope>system</scope>
<systemPath>/.../src/main/.../some.jar</systemPath>
</dependency>
...
</dependencies>
...
на основе значения "/dependencies/dependency/groupId" И "/dependencies/dependency/artifactId"
в bash (от xmlstarlet,...)?
Обновлять
Очевидно, это кажется недостаточно ясным. Итак: код должен найти зависимость с groupId==xyz и ArtiftId==abc, а затем (и только тогда) добавить два узла now к родителю узла groupId и ArtiftId.
maven - но это не вопрос (обновление)
Когда вы говорите в зависимости от «зависимостей/зависимости/группового идентификатора» И «/зависимости/зависимости/артефактного идентификатора», в чем логика? Используются ли значения в этих полях? Обновляется ли он только при наличии определенных значений?
добавлено дополнительное объяснение
Попробуйте что-то вроде:
xmlstarlet ed \
--subnode "//dependency[//artifactId[./text()='abc']][//groupId[./text()='xyz']]" --type elem -n scope -v "system" \
--subnode "//dependency[//artifactId[./text()='abc']][//groupId[./text()='xyz']]" --type elem -n systemPath -v "some.jar" \
file.xml
@eventhorizon Чего не хватает?
Смотрите мой ответ. Ваше предложение абсолютно правильное. Отсутствует важная вещь — второстепенная, но важная — это пространство имен «вещь»… У других может быть такая же проблема, но они недостаточно знают об этом…
С помощью @Jack Fleeting и поста от @uk4sx (XMLStarlet ничего не выбирает) — нужно было установить пространство имен — я, наконец, запустил его так (он запускается из Dockerfile):
RUN xmlstarlet ed -L -N my=http://maven.apache.org/POM/4.0.0 \
--subnode "//my:dependencies/my:dependency[my:artifactId[./text()='abc']][my:groupId[./text()='xyz']]" \
--type elem -n scope -v "system" \
--subnode "//my:dependencies/my:dependency[my:artifactId[./text()='abc']][my:groupId[./text()='xyz']]" \
--type elem -n systemPath -v "\.../src/main/.../some.jar" \
./pom.xml
Откуда вы берете переменную project.basedir?