На данный момент я пытаюсь выяснить, как вставить новые учетные данные сервера в maven settings.xml с помощью XSL (xalan 2.7.1). Моя проблема в том, что выходной XML всегда имеет пустой элемент xmlns=""
в своем теге, который не нравится Maven!
Это базовый XML:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<!-- Server Credentials -->
<servers>
</servers>
</settings>
Мой XSL:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mvn="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xslt="http://xml.apache.org/xslt"
exclude-result-prefixes="mvn xsl xslt">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="yes" xslt:indent-amount="4" />
<xsl:param name="server.id" />
<xsl:param name="server.username" />
<xsl:param name="server.password" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="mvn:servers">
<xsl:copy>
<xsl:apply-templates />
<server>
<id>
<xsl:value-of select="$server.id" />
</id>
<username>
<xsl:value-of select="$server.username" />
</username>
<password>
<xsl:value-of select="$server.password" />
</password>
</server>
</xsl:copy>
</xsl:template>
At the end of the transformation, it Looks like this:
<!-- Server Credentials -->
<servers>
<server xmlns="">
<id>nexus-nbg</id>
<username>testuser</username>
<password>{PMjrq7GDvwgH4xBziBIjb71GZSlgovs6D85zXogvP9I=}</password>
</server>
</servers>
Поэтому он вставляет пустой xmlns
-тег, который не нравится Maven, и печатает некоторые ПРЕДУПРЕЖДЕНИЯ. Также у первого server
-тега тоже неправильный отступ?! Итак, я уже сопоставляю пространства имен, чтобы сопоставитель работал, и я также включил exlude-result-prefixes
Что еще мне нужно сделать?!
Буду рад, если у кого-нибудь здесь есть идея!
С наилучшими пожеланиями,
Даниэль