Doesn't this do something very similar to the dist plugin?
--
dIon Gillard, Multitask Consulting
Blog: http://blogs.codehaus.org/people/dion/
[EMAIL PROTECTED] wrote on 18/10/2003 08:21:41 AM:
> jvanzyl 2003/10/17 15:21:41
>
> Modified: release plugin.jelly
> release/xdocs goals.xml properties.xml
> Log:
> o incorporating Mauro Televi's patch to the release plugin, these
> changes have been battle tested with DNA/Loom.
>
> Mauro's comments are attached for posterity:
>
> ---
>
> attached is a first crack that incorporates the release functionality
> currently in DNA and Loom distribution modules.
>
> Two types of distributions:
> - bin: this requires user customisation - uses dependency properties
to
> assign a category to a dependency and via a property
> Eg, maven.release.distribution.categories=shared:lib,tools:tools/lib
> tells it to place any "shared" dependency in path lib/ and
> "tools" dependendency in tools/lib.
> User can postGoal release:setup-distribution-bin to add any further
> content to distribution.
>
> - src: uses SCM plugin out of a box :-) works quite well IMO.
>
> distribution artifact names are customisable but default to
> ${maven.final.name}-[bin|src].[tar.gz|zip]
>
> Patch has documentation updated - so feel free to browse,
> and let me if too scarse or patch.
>
> If you create an issue in jira I can also attach the patch to it.
> (I'm not sure If I can create the issue myself on maven project)
>
> Further work would include incorporating the wrapper exes for the
> release,� but perhaps that's better done via a separate plugin.
>
> Revision Changes Path
> 1.19 +131 -0 maven-plugins/release/plugin.jelly
>
> Index: plugin.jelly
> ===================================================================
> RCS file: /home/cvs/maven-plugins/release/plugin.jelly,v
> retrieving revision 1.18
> retrieving revision 1.19
> diff -u -r1.18 -r1.19
> --- plugin.jelly 29 Sep 2003 12:32:57 -0000 1.18
> +++ plugin.jelly 17 Oct 2003 22:21:41 -0000 1.19
> @@ -1,6 +1,11 @@
> <?xml version="1.0"?>
>
> <project
> + xmlns:ant="jelly:ant"
> + xmlns:archive="release:archive"
> + xmlns:define="jelly:define"
> + xmlns:deploy="deploy"
> + xmlns:maven="jelly:maven"
> xmlns:j="jelly:core"
> xmlns:i="jelly:interaction"
> xmlns:u="jelly:util"
> @@ -36,6 +41,64 @@
> | of the latest snapshot.
> -->
>
> + <!--
+ | Archive taglib:
+ | - copy-dependencies:
> copies dependencies for category groups
+ |
> attributes: category, todir
+ | - gzip: creates tar.gz
> distribution file
+ | attributes: dir, name
+ |
> - zip: creates zip distribution file
+ |
> attributes: dir, name
+ -->
> + <define:taglib uri="release:archive">
> + <define:tag name="copy-dependencies">
> + <j:if test="${projectDescriptor != null}">
> + <maven:pom var="pom"
> projectDescriptor="${projectDescriptor}"/>
> + </j:if>
> +
> + <j:set var="mavenRepoLocal" value='${context.
> getVariable("maven.repo.local")}'/>
> + <j:forEach var="dependency" items="${pom.dependencies}">
> + <j:if test='${category.equals(dependency.
> getProperty("category"))}'>
> + <j:set var="addDependencies" value='true'/>
> + </j:if>
> + </j:forEach>
> +
> + <j:if test='${addDependencies == "true" }'>
> + <ant:mkdir dir="${todir}"/>
> + <ant:copy todir="${todir}" flatten="true">
> + <ant:fileset dir="${mavenRepoLocal}">
> + <j:forEach var="dependency" items="${pom.
> dependencies}">
> + <j:if test='${category.
> equals(dependency.getProperty("category"))}'>
> + <ant:include name="${dependency.
> artifactDirectory}/jars/${dependency.artifact}"/>
> + <ant:include name="${dependency.
> artifactDirectory}/licenses/${dependency.artifactId}.license"/>
> + </j:if>
> + </j:forEach>
> + </ant:fileset>
> + </ant:copy>
> + </j:if>
> + </define:tag>
> + <define:tag name="gzip">
> + <ant:tar longfile="gnu"
tarfile="${maven.build.dir}/${name}.tar">
> + <ant:tarfileset dir="${dir}" prefix="${name}"/>
> + </ant:tar>
> + <ant:gzip zipfile="${maven.build.dir}/${name}.tar.gz"
> + src="${maven.build.dir}/${name}.tar"/>
> + <ant:delete file="${maven.build.dir}/${name}.tar"/>
> + </define:tag>
> + <define:tag name="zip">
> + <ant:zip destfile="${maven.build.dir}/${name}.zip">
> + <ant:zipfileset dir="${dir}" prefix="${name}"/>
> + </ant:zip>
> + </define:tag>
> + <define:tag name="deploy">
> + <deploy:artifact
> + artifact="${maven.build.dir}/${name}"
> + type="distributions"
> + assureDirectoryCommand="mkdir -p"
> + siteCommand="cd @deployDirectory@; chmod g+w
> ${name}; chgrp ${maven.remote.group} ${name}"/>
> + </define:tag>
> + </define:taglib>
> +
> <!--
|
| Convert SNAPSHOT version identifiers to
> real snapshot versions.
@@ -158,7 +221,75 @@
| deploy
> instead of having to build everything all the time.
|
-->
> + </goal>
> +
> + <!--
+ |
+ | Initialise release variables
+ |
+ -->
> + <goal name="release:init">
> + <j:set var="releaseNameBin" value="${maven.release.name.bin}"/>
> + <j:if test="${empty(releaseNameBin)}">
> + <j:set var="releaseNameBin" value="${pom.artifactId}-${pom.
> currentVersion}-bin"/>
> + </j:if>
> + <j:set var="releaseNameSrc" value="${maven.release.name.src}"/>
> + <j:if test="${empty(releaseNameSrc)}">
> + <j:set var="releaseNameSrc" value="${pom.artifactId}-${pom.
> currentVersion}-src"/>
> + </j:if>
> + </goal>
> +
> + <!--
+ |
+ | Build a binary distribution copying
> dependencies according to
+ | category groups.
+ |
+ -->
> + <goal name="release:setup-distribution-bin" prereqs="release:init">
> + <ant:mkdir dir="${maven.build.dir}/${releaseNameBin}"/>
> + <u:tokenize var="categories" delim="," trim="true">${maven.
> release.distribution.categories}</u:tokenize>
> + <j:forEach var="category" items="${categories}">
> + <u:tokenize var="pair" delim=":"
trim="true">${category}</u:tokenize>
> + <j:set var="name" value="${pair.get(0)}"/>
> + <j:set var="path" value="${pair.get(1)}"/>
> + <archive:copy-dependencies category="${name}" todir="${maven.
> build.dir}/${releaseNameBin}/${path}"/>
> + </j:forEach>
> + </goal>
>
> + <goal name="release:build-distribution-bin" prereqs="release:
> setup-distribution-bin">
> + <archive:gzip name="${releaseNameBin}" dir="${maven.build.
> dir}/${releaseNameBin}"/>
> + <archive:zip name="${releaseNameBin}" dir="${maven.build.dir}
> /${releaseNameBin}"/>
> + </goal>
> +
> + <!--
+ |
+ | Build a source distribution from source
> repository.
+ | Uses scm plugin to checkout project.
+ |
+ -->
> + <goal name="release:build-distribution-src" prereqs="release:
> init,scm:checkout-project">
> + <archive:gzip name="${releaseNameSrc}" dir="${maven.scm.
> checkout.dir}/${maven.scm.cvs.module}"/>
> + <archive:zip name="${releaseNameSrc}" dir="${maven.scm.
> checkout.dir}/${maven.scm.cvs.module}"/>
> + </goal>
> +
> + <!--
+ |
+ | Deploy a binary distribution.
+ |
+ -->
> + <goal name="release:deploy-distribution-bin" prereqs="release:
> build-distribution-bin">
> + <archive:deploy name="${releaseNameBin}.tar.gz"/>
> + <archive:deploy name="${releaseNameBin}.zip"/>
> + </goal>
> +
> + <!--
+ |
+ | Deploy a source distribution.
+ |
+ -->
> + <goal name="release:deploy-distribution-src" prereqs="release:
> build-distribution-src">
> + <archive:deploy name="${releaseNameSrc}.tar.gz"/>
> + <archive:deploy name="${releaseNameSrc}.zip"/>
> </goal>
>
> </project>
>
>
>
> 1.2 +27 -0 maven-plugins/release/xdocs/goals.xml
>
> Index: goals.xml
> ===================================================================
> RCS file: /home/cvs/maven-plugins/release/xdocs/goals.xml,v
> retrieving revision 1.1
> retrieving revision 1.2
> diff -u -r1.1 -r1.2
> --- goals.xml 25 Jul 2003 06:00:33 -0000 1.1
> +++ goals.xml 17 Oct 2003 22:21:41 -0000 1.2
> @@ -27,6 +27,33 @@
> </description>
> </goal>
> <goal>
> + <name>release:build-distribution-bin</name>
> + <description>
> + Builds binary distribution. Uses <code>maven.
> release.distribution.categories</code> property
> + to separated dependencies in categories and
> corresponding distribution directories.
> + Users can postGoal <code>release:setup-distribution-
> bin</code> with custom additional
> + distribution content.
> + </description>
> + </goal>
> + <goal>
> + <name>release:build-distribution-src</name>
> + <description>
> + Builds source distribution from source control using
> SCM plugin.
> + </description>
> + </goal>
> + <goal>
> + <name>release:deploy-distribution-bin</name>
> + <description>
> + Deploys binary distribution built via <code>release:
> build-distribution-bin</code>
> + </description>
> + </goal>
> + <goal>
> + <name>release:deploy-distribution-src</name>
> + <description>
> + Deploys source distribution built via <code>release:
> build-distribution-src</code>
> + </description>
> + </goal>
> + <goal>
> <name>validate-pom-for-release</name>
> <description>
> </description>
>
>
>
> 1.2 +46 -1 maven-plugins/release/xdocs/properties.xml
>
> Index: properties.xml
> ===================================================================
> RCS file: /home/cvs/maven-plugins/release/xdocs/properties.xml,v
> retrieving revision 1.1
> retrieving revision 1.2
> diff -u -r1.1 -r1.2
> --- properties.xml 25 Jul 2003 06:00:33 -0000 1.1
> +++ properties.xml 17 Oct 2003 22:21:41 -0000 1.2
> @@ -6,7 +6,52 @@
> </properties>
> <body>
> <section name="Maven Release Plug-in Settings">
> - <p>There are no settings to customize this plugin</p>
> + <table>
> + <tr>
> + <th>Property</th>
> + <th>Optional?</th>
> + <th>Description</th>
> + </tr>
> + <tr>
> + <td>maven.release.name.bin</td>
> + <td>Yes</td>
> + <td>The name of the binary release file.
> + Defaults to <code>${pom.artifactId}-${pom.
> currentVersion}-bin</code></td>
> + </tr>
> + <tr>
> + <td>maven.release.name.src</td>
> + <td>Yes</td>
> + <td>The name of the source release file.
> + Defaults to <code>${pom.artifactId}-${pom.
> currentVersion}-src</code></td>
> + </tr>
> + <tr>
> + <td>maven.release.distribution.categories</td>
> + <td>Yes</td>
> + <td>The categories and relative paths of the dependencies
to
> + be included in the release. A list of category:path
> + pairs, eg
<code>shared:lib,tools:tools/lib</code>,where the
> + category is set via dependency properties:
> +<source><![CDATA[
> + <dependency>
> + <groupId>[groupId]</groupId>
> + <artifactId>[artifactId]</artifactId>
> + <version>[version]</version>
> + <properties>
> + <category>shared</category>
> + </properties>
> + </dependency>
> + <dependency>
> + <groupId>[anotherGroupId]</groupId>
> + <artifactId>[anotherArtifactId]</artifactId>
> + <version>[anotherVersion]</version>
> + <properties>
> + <category>tools</category>
> + </properties>
> + </dependency>
> +]]></source>
> + </td>
> + </tr>
> + </table>
> </section>
> </body>
> </document>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]