不确定你是否解决了这个问题,但我过去用 xsltproc 做过类似的事情(我知道你说过不要使用它,但我从来没有找到另一种方法)。
function merge_xml ()
{
TEMP_XML1="some-temp-file1.xml"
TEMP_XML2="some-temp-file2.xml"
cat > $TEMP_XML1
cp $1 $TEMP_XML2
echo "Merging XML stream from $1 into $2" >&2
xsltproc --stringparam with "$TEMP_XML1" merge.xslt "$TEMP_XML2" | tidy -xml -indent -quiet -wrap 500 -output $2
}
merge.xslt 可以在这里找到http://www2.informatik.hu-berlin.de/~obecker/XSLT/merge/merge.xslt
然后调用 Bash 函数:
merge_xml $PROJECT_ROOT/content/pom.xml $PROJECT_ROOT/content/pom.xml << EOF
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>my-artifact</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>jar</classifier>
</dependency>
</dependencies>
</project>
EOF