blob: c293168344f82395b93979663aca74ae041bd651 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- written by David Smiley, dsmiley@mitre.org -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:mv2="http://maven.apache.org/POM/4.0.0" exclude-result-prefixes="mv2">
<xsl:output indent="yes" method="xml" omit-xml-declaration="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/project">
<project 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">
<modelVersion>4.0.0</modelVersion>
<xsl:apply-templates />
</project>
</xsl:template>
<xsl:template match="/project/id">
<artifactId><xsl:value-of select="."/></artifactId>
</xsl:template>
<xsl:template match="/project/groupId">
<groupId><xsl:value-of select="/project/package"/></groupId>
</xsl:template>
<xsl:template match="currentVersion">
<version><xsl:value-of select="."/></version>
</xsl:template>
<xsl:template match="extend">
<parent>
<!-- chop off project.xml -->
<xsl:variable name="pthX" select="substring(.,0,string-length(.)-10)" />
<!-- remove ${basedir}/ if present, then append pom.xml -->
<xsl:variable name="pth">
<xsl:choose>
<xsl:when test="contains($pthX,'${basedir}/')">
<xsl:value-of select="substring-after($pthX,'${basedir}/')"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$pthX" /></xsl:otherwise>
</xsl:choose>
<xsl:text>pom.xml</xsl:text>
</xsl:variable>
<!-- load parent pom and grab what we need -->
<xsl:variable name="ppom" select="document($pth,/*)/mv2:project"></xsl:variable>
<artifactId><xsl:value-of select="$ppom/mv2:artifactId" /></artifactId>
<groupId><xsl:value-of select="$ppom/mv2:groupId" /></groupId>
<version><xsl:value-of select="$ppom/mv2:version" /></version>
<xsl:if test="not($pth = '../pom.xml')">
<relativePath><xsl:value-of select="$pth"/></relativePath>
</xsl:if>
</parent>
</xsl:template>
<xsl:template match="shortDescription">
<!-- TODO: if no //description then output as description; otherwise omitt -->
</xsl:template>
<xsl:template match="issueTrackingUrl">
<issueManagement>
<url><xsl:value-of select="."/></url>
</issueManagement>
</xsl:template>
<xsl:template match="repository">
<scm><xsl:apply-templates /></scm>
</xsl:template>
<xsl:template match="unitTestSourceDirectory">
<testSourceDirectory><xsl:value-of select="."/></testSourceDirectory>
</xsl:template>
<xsl:template match="unitTest">
<testResources>
<xsl:apply-templates select="resources/resource" />
<xsl:apply-templates select="includes|excludes" />
</testResources>
</xsl:template>
<!-- omitt with comment -->
<xsl:template name="comment">
<xsl:comment>
<xsl:call-template name="commentX" />
</xsl:comment>
</xsl:template>
<xsl:template name="commentX">
<xsl:value-of select="concat(local-name(.),': ',normalize-space(text()),' ')" />
<xsl:for-each select="*">
<xsl:call-template name="commentX" />
</xsl:for-each>
</xsl:template>
<xsl:template match="logo|siteAddress|siteDirectory|distributionSite|distributionDirectory">
<xsl:call-template name="comment" />
</xsl:template>
<xsl:template match="gumpRepositoryId|versions|branches|packageGroups|properties">
<xsl:call-template name="comment" />
</xsl:template>
<xsl:template match="nagEmailAddress|aspectSourceDirectory|integrationUnitTestSourceDirectory">
<xsl:call-template name="comment" />
</xsl:template>
<xsl:template match="unitTest/includes|unitTest/excludes">
<xsl:call-template name="comment" />
</xsl:template>
<xsl:template match="dependency/id|dependency/url|dependency/jar|dependency/properties">
<xsl:call-template name="comment" />
</xsl:template>
<!-- omitt silently (handled elsewhere) -->
<xsl:template match="sourceModifications|defaultGoal|package" />
<!-- a copy template that ensures proper namespace -->
<xsl:template match="*">
<xsl:element name="{local-name(.)}"><xsl:apply-templates /></xsl:element>
</xsl:template>
<xsl:template match="comment()"><xsl:copy-of select="."/></xsl:template>
</xsl:stylesheet>