initial version - cruisecontrol config file generation plugin
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@113914 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
64
cruisecontrol/plugin.jelly
Normal file
64
cruisecontrol/plugin.jelly
Normal file
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<project
|
||||
xmlns:j="jelly:core"
|
||||
xmlns:util="jelly:util"
|
||||
xmlns:x="jelly:xml"
|
||||
xmlns:ant="jelly:ant">
|
||||
|
||||
<goal name="cruisecontrol" prereqs="cruisecontrol:configure"/>
|
||||
|
||||
<!--==================================================================-->
|
||||
<!-- Validate necessary properties for Cruise Control -->
|
||||
<!--==================================================================-->
|
||||
<goal name="cruisecontrol:validate" prereqs="scm:validate">
|
||||
<j:set var="ccHome" value="${maven.cruisecontrol.home}" />
|
||||
<j:if test="${ccHome == 'CC_HOME_NOT_SET'}">
|
||||
<ant:fail>You must specify maven.cruisecontrol.home</ant:fail>
|
||||
</j:if>
|
||||
|
||||
<j:set var="nagEmail" value="${pom.build.nagEmailAddress}" />
|
||||
<j:if test="${nagEmail == ''}">
|
||||
<ant:fail>You must specify pom.build.nagEmailAddress</ant:fail>
|
||||
</j:if>
|
||||
<j:set var="defaultSuffix" value="${maven.cruisecontrol.mail.defaultsuffix}" />
|
||||
<j:if test="${defaultSuffix == 'DEFAULT_SUFFIX_NOT_SET'}">
|
||||
<util:tokenize var="tokens" delim="@">${pom.build.nagEmailAddress}</util:tokenize>
|
||||
<j:set var="maven.cruisecontrol.mail.defaultsuffix" value="@${tokens[1]}" />
|
||||
</j:if>
|
||||
</goal>
|
||||
|
||||
<!--==================================================================-->
|
||||
<!-- Update a configuration file for Cruise Control -->
|
||||
<!-- Will add or update this project's section -->
|
||||
<!--==================================================================-->
|
||||
<goal name="cruisecontrol:configure"
|
||||
description="Update a Cruise Control configuration file with this project"
|
||||
prereqs="cruisecontrol:validate">
|
||||
<x:parse var="doc"><cruisecontrol></cruisecontrol></x:parse>
|
||||
<util:available file="${maven.cruisecontrol.config}">
|
||||
<util:file var="inputFile" name="${maven.cruisecontrol.config}" />
|
||||
<x:parse var="doc" xml="${inputFile}" />
|
||||
</util:available>
|
||||
|
||||
<j:set
|
||||
var="tempConfigFile"
|
||||
value="${maven.build.dir}/cruisecontrol-config-temp.xml" />
|
||||
<j:set
|
||||
var="stylesheet"
|
||||
value="file:${plugin.resources}/cruisecontrol.jsl" />
|
||||
<j:file name="${tempConfigFile}" outputMode="xml" prettyPrint="yes">
|
||||
<j:include uri="${stylesheet.toString()}" />
|
||||
</j:file>
|
||||
<ant:copy file="${tempConfigFile}" tofile="${maven.cruisecontrol.config}" />
|
||||
</goal>
|
||||
|
||||
<!--==================================================================-->
|
||||
<!-- Run Cruise Control -->
|
||||
<!--==================================================================-->
|
||||
<goal name="cruisecontrol:run"
|
||||
description="Run Cruise Control">
|
||||
<!-- TODO -->
|
||||
</goal>
|
||||
</project>
|
||||
|
||||
9
cruisecontrol/plugin.properties
Normal file
9
cruisecontrol/plugin.properties
Normal file
@@ -0,0 +1,9 @@
|
||||
maven.cruisecontrol.config=${basedir}/cruisecontrol.xml
|
||||
maven.cruisecontrol.schedule.interval=300
|
||||
maven.cruisecontrol.checkout.dir=${basedir}/checkout
|
||||
maven.cruisecontrol.logs.dir=${basedir}/target/cc-logs
|
||||
maven.cruisecontrol.goals=scm:update|clean test|site:deploy
|
||||
maven.cruisecontrol.home=CC_HOME_NOT_SET
|
||||
maven.cruisecontrol.mail.host=localhost
|
||||
maven.cruisecontrol.mail.defaultsuffix=DEFAULT_SUFFIX_NOT_SET
|
||||
maven.cruisecontrol.mail.subjectprefix=[BUILD]
|
||||
7
cruisecontrol/project.properties
Normal file
7
cruisecontrol/project.properties
Normal file
@@ -0,0 +1,7 @@
|
||||
# -------------------------------------------------------------------
|
||||
# P R O J E C T P R O P E R T I E S
|
||||
# -------------------------------------------------------------------
|
||||
maven.xdoc.date=left
|
||||
maven.xdoc.version=${pom.currentVersion}
|
||||
maven.license.licenseFile=${basedir}/../../../LICENSE.txt
|
||||
|
||||
47
cruisecontrol/project.xml
Normal file
47
cruisecontrol/project.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<project>
|
||||
<extend>${basedir}/../project.xml</extend>
|
||||
<id>maven-cruisecontrol-plugin</id>
|
||||
<name>Maven Cruise Control Plug-in</name>
|
||||
<currentVersion>1.0-SNAPSHOT</currentVersion>
|
||||
<description>A plugin to handle the generating and maintaining of Cruise Control configuration</description>
|
||||
<shortDescription>Cruise Control Plugin for Maven</shortDescription>
|
||||
<url>http://maven.apache.org/reference/plugins/cruisecontrol/</url>
|
||||
<siteDirectory>/www/maven.apache.org/reference/plugins/cruisecontrol/</siteDirectory>
|
||||
<repository>
|
||||
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven/src/plugins-build/cruisecontrol/</connection>
|
||||
<url>http://cvs.apache.org/viewcvs/maven/src/plugins-build/cruisecontrol/</url>
|
||||
</repository>
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Brett Porter</name>
|
||||
<id>brett</id>
|
||||
<email>brett@apache.org</email>
|
||||
<organization>f2 network</organization>
|
||||
<roles>
|
||||
<role>Developer</role>
|
||||
</roles>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>commons-jelly</groupId>
|
||||
<artifactId>commons-jelly-tags-xml</artifactId>
|
||||
<version>20030211.142705</version>
|
||||
<url>http://jakarta.apache.org/commons/jelly/libs/xml/</url>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-jelly</groupId>
|
||||
<artifactId>commons-jelly-tags-jsl</artifactId>
|
||||
<version>20030211.143151</version>
|
||||
<url>http://jakarta.apache.org/commons/jelly/libs/jsl/</url>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<nagEmailAddress>bporter@f2network.com.au</nagEmailAddress>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
53
cruisecontrol/src/plugin-resources/cruisecontrol.jsl
Normal file
53
cruisecontrol/src/plugin-resources/cruisecontrol.jsl
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<jsl:stylesheet select="$doc"
|
||||
xmlns:jsl="jelly:jsl"
|
||||
xmlns:x="jelly:xml"
|
||||
xmlns:j="jelly:core"
|
||||
xmlns="dummy" trim="false">
|
||||
<jsl:template match="cruisecontrol" trim="false">
|
||||
<jsl:copy>
|
||||
<!-- TODO: more configurable -->
|
||||
<project name="${pom.artifactId}">
|
||||
<bootstrappers>
|
||||
<currentbuildstatusbootstrapper file="${maven.cruisecontrol.logs.dir}/currentbuildstatus.txt"/>
|
||||
</bootstrappers>
|
||||
<modificationset>
|
||||
<j:if test="${pom.getPluginContext('maven-scm-plugin').getVariable('maven.scm.method') == 'cvs'}">
|
||||
<cvs cvsroot="${pom.getPluginContext('maven-scm-plugin').getVariable('maven.scm.cvs.root')}" localWorkingCopy="${maven.cruisecontrol.checkout.dir}/${pom.getPluginContext('maven-scm-plugin').getVariable('maven.scm.cvs.module')}" />
|
||||
</j:if>
|
||||
</modificationset>
|
||||
<schedule interval="${maven.cruisecontrol.schedule.interval}">
|
||||
<maven mavenscript="${maven.home}/bin/maven" goal="${maven.cruisecontrol.goals}" projectfile="${maven.cruisecontrol.checkout.dir}/${pom.getPluginContext('maven-scm-plugin').getVariable('maven.scm.cvs.module')}/project.xml"/>
|
||||
</schedule>
|
||||
<publishers>
|
||||
<currentbuildstatuspublisher file="${maven.cruisecontrol.logs.dir}/currentbuildstatus.txt"/>
|
||||
<htmlemail
|
||||
subjectprefix="${maven.cruisecontrol.mail.subjectprefix}"
|
||||
defaultsuffix="${maven.cruisecontrol.mail.defaultsuffix}"
|
||||
mailhost="${maven.cruisecontrol.mail.host}"
|
||||
returnaddress="${pom.build.nagEmailAddress}"
|
||||
logdir="${maven.cruisecontrol.logs.dir}/${pom.artifactId}"
|
||||
css="${maven.cruisecontrol.home}/reporting/jsp/css/cruisecontrol.css"
|
||||
xsldir="${maven.cruisecontrol.home}/reporting/jsp/xsl">
|
||||
<failure address="${pom.build.nagEmailAddress}" />
|
||||
</htmlemail>
|
||||
</publishers>
|
||||
</project>
|
||||
<jsl:applyTemplates select="./project" />
|
||||
</jsl:copy>
|
||||
</jsl:template>
|
||||
|
||||
<jsl:template match="*" trim="false">
|
||||
<j:set var="name"><x:expr select="@name" /></j:set>
|
||||
<j:if test="${name != pom.artifactId}">
|
||||
<jsl:copy>
|
||||
<jsl:applyTemplates />
|
||||
</jsl:copy>
|
||||
</j:if>
|
||||
</jsl:template>
|
||||
|
||||
<jsl:template match="@*" trim="false" />
|
||||
|
||||
</jsl:stylesheet>
|
||||
|
||||
19
cruisecontrol/xdocs/goals.xml
Normal file
19
cruisecontrol/xdocs/goals.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<document>
|
||||
<properties>
|
||||
<title>Maven Cruise Control Plug-in Goals</title>
|
||||
</properties>
|
||||
<body>
|
||||
<goals>
|
||||
<goal>
|
||||
<name>cruisecontrol:configure</name>
|
||||
<description>Update a Cruise Control configuration file with this project</description>
|
||||
</goal>
|
||||
<goal>
|
||||
<name>cruisecontrol:run</name>
|
||||
<description>Run Cruise Control</description>
|
||||
</goal>
|
||||
</goals>
|
||||
</body>
|
||||
</document>
|
||||
17
cruisecontrol/xdocs/navigation.xml
Normal file
17
cruisecontrol/xdocs/navigation.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<project name="Maven Cruise Control Plug-in">
|
||||
<title>Maven Cruise Control Plug-in</title>
|
||||
<body>
|
||||
<links>
|
||||
<item href="http://maven.apache.org/" name="Maven">
|
||||
</item>
|
||||
</links>
|
||||
<menu name="Overview">
|
||||
<item href="/goals.html" name="Goals">
|
||||
</item>
|
||||
<item href="/properties.html" name="Properties">
|
||||
</item>
|
||||
</menu>
|
||||
</body>
|
||||
</project>
|
||||
89
cruisecontrol/xdocs/properties.xml
Normal file
89
cruisecontrol/xdocs/properties.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<document>
|
||||
<properties>
|
||||
<title>Maven Cruise Control Plug-in Properties</title>
|
||||
</properties>
|
||||
<body>
|
||||
<section name="Maven Cruise Control Plug-in Settings">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Property</th>
|
||||
<th>Optional?</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.home</td>
|
||||
<td>No</td>
|
||||
<td>
|
||||
<p>Location of cruise control installation - for finding the reporting directory</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.schedule.interval</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Seconds in between builds for this project. Default value is
|
||||
<code>300</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.mail.host</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Default value is
|
||||
<code>localhost</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.mail.subjectprefix</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Default value is
|
||||
<code>[BUILD]</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.checkout.dir</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Where to checkout/update code temporarily. Default value is
|
||||
<code>${basedir}/checkout</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.logs.dir</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Default value is
|
||||
<code>${basedir}/target/cc-logs</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.goals</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Default value is
|
||||
<code>scm:update|clean test|site:deploy</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.config</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Config file to update/create. Default value is
|
||||
<code>${basedir}/cruisecontrol.xml</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maven.cruisecontrol.mail.defaultsuffix</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
<p>Default value is the domain name of the first email in
|
||||
<code>${pom.build.nagEmailAddress}</code>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
</body>
|
||||
</document>
|
||||
Reference in New Issue
Block a user