maven-plugins/dist/plugin.jelly
2006-02-02 19:20:59 +00:00

561 lines
19 KiB
XML

<?xml version="1.0"?>
<!--
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<project
xmlns:j="jelly:core"
xmlns:ant="jelly:ant"
xmlns:maven="jelly:maven"
xmlns:artifact="artifact"
xmlns:util="jelly:util">
<j:new var="distTypeHandler" className="org.apache.maven.dist.DistributionArtifactTypeHandler" />
<!-- ================================================================== -->
<!-- D I S T R I B U T I O N S -->
<!-- ================================================================== -->
<goal
name="dist:prepare-bin-filesystem"
prereqs="xdoc:init, jar:jar, site:generate"
description="Builds the binary distribution file system.">
<!--
This is the directory where everything is copied to so that it can
be archived.
-->
<ant:delete dir="${maven.dist.bin.assembly.dir}"/>
<ant:mkdir dir="${maven.dist.bin.assembly.dir}"/>
<ant:echo>
+-------------------------------------------------------+
| C R E A T I N G B I N A R Y D I S T R I B U T I O N |
+-------------------------------------------------------+
</ant:echo>
<ant:copy todir="${maven.dist.bin.assembly.dir}">
<ant:fileset dir=".">
<ant:include name="README.txt"/>
<ant:include name="LICENSE*"/>
<ant:include name="NOTICE*"/>
</ant:fileset>
</ant:copy>
<!-- Copy artifact -->
<ant:copy todir="${maven.dist.bin.assembly.dir}">
<ant:fileset dir="${maven.build.dir}">
<ant:include name="${maven.dist.bin.artifact}"/>
</ant:fileset>
</ant:copy>
<!-- Copy documentation -->
<j:set var="docsDest" value="${maven.docs.dest}"/>
<ant:copy todir="${maven.dist.bin.assembly.dir}/docs">
<ant:fileset dir="${docsDest}">
<ant:include name="**"/>
</ant:fileset>
</ant:copy>
</goal>
<goal
name="dist:prepare-src-filesystem"
description="Builds the source distribution file system.">
<!-- S O U R C E D I S T R I B U T I O N -->
<ant:delete dir="${maven.dist.src.assembly.dir}" />
<ant:mkdir dir="${maven.dist.src.assembly.dir}" />
<ant:echo>
+-------------------------------------------------------+
| C R E A T I N G S O U R C E D I S T R I B U T I O N |
+-------------------------------------------------------+
</ant:echo>
<util:tokenize var="includelist" delim=",">${maven.dist.src.include}</util:tokenize>
<ant:copy todir="${maven.dist.src.assembly.dir}">
<ant:fileset dir=".">
<ant:include name="README.txt"/>
<ant:include name="LICENSE*"/>
<ant:include name="NOTICE*"/>
<ant:include name="project.properties"/>
<ant:include name="maven.xml"/>
<ant:include name="project.xml"/>
<j:forEach items="${includelist}" var="includeitem">
<ant:include name="${includeitem}" />
</j:forEach>
</ant:fileset>
</ant:copy>
<maven:get var="build.xml" plugin="maven-ant-plugin" property="maven.ant.generatebuild.file"/>
<ant:available property="maven.dist.build.xml.avail" file="${build.xml}"/>
<j:if test="${maven.dist.build.xml.avail}">
<ant:copy todir="${maven.dist.src.assembly.dir}" file="${build.xml}"/>
</j:if>
<!-- Copy Source -->
<util:available file="${maven.src.dir}">
<ant:copy todir="${maven.dist.src.assembly.dir}/src">
<ant:fileset dir="${maven.src.dir}" />
</ant:copy>
</util:available>
</goal>
<goal name="dist"
prereqs="dist:build"
description="Build a complete distribution.">
</goal>
<goal
name="dist:build"
prereqs="dist:build-bin,dist:build-src"
description="Build a complete distribution.">
</goal>
<goal
name="dist:build-setup"
description="Set up directories for a distribution build">
<ant:delete dir="${maven.dist.dir}"/>
<ant:mkdir dir="${maven.dist.dir}"/>
<j:set var="lfFilter" value="${maven.dist.lf.filter}"/>
<j:set var="crlfFilter" value="${maven.dist.crlf.filter}"/>
</goal>
<goal
name="dist:build-bin"
prereqs="dist:build-setup,dist:prepare-bin-filesystem"
description="Build the binary distribution.">
<!-- Use LF line endings for specified files if lf filter
is set -->
<j:if test="${lfFilter.length() > 0}">
<ant:fixcrlf srcdir="${maven.dist.bin.archive.dir}"
eol="lf" includes="${lfFilter}"/>
</j:if>
<!-- Create a tar.gz file -->
<ant:tar longfile="gnu" tarfile="${maven.dist.dir}/${maven.final.name}.tar">
<ant:tarfileset dir="${maven.dist.bin.archive.dir}"/>
</ant:tar>
<ant:gzip
zipfile="${maven.dist.dir}/${maven.final.name}.tar.gz"
src="${maven.dist.dir}/${maven.final.name}.tar"
/>
<ant:delete file="${maven.dist.dir}/${maven.final.name}.tar"/>
<!-- Use CRLF line endings for specified files in zip if crlf filter
is set -->
<j:if test="${crlfFilter.length() > 0}">
<ant:fixcrlf srcdir="${maven.dist.bin.archive.dir}"
eol="crlf" includes="${crlfFilter}"/>
</j:if>
<!-- Create a zip file -->
<ant:zip zipfile="${maven.dist.dir}/${maven.final.name}.zip">
<ant:zipfileset dir="${maven.dist.bin.archive.dir}"/>
</ant:zip>
</goal>
<goal
name="dist:build-src"
prereqs="dist:build-setup,dist:prepare-src-filesystem"
description="Build the source distribution.">
<!-- Use LF line endings for specified files in unix distros if lf filter
is set -->
<j:if test="${lfFilter.length() > 0}">
<ant:fixcrlf srcdir="${maven.dist.src.archive.dir}"
eol="lf" includes="${lfFilter}"/>
</j:if>
<!-- Create a tar.gz file -->
<ant:tar longfile="gnu" tarfile="${maven.dist.dir}/${maven.final.name}-src.tar">
<ant:tarfileset dir="${maven.dist.src.archive.dir}"/>
</ant:tar>
<ant:gzip
zipfile="${maven.dist.dir}/${maven.final.name}-src.tar.gz"
src="${maven.dist.dir}/${maven.final.name}-src.tar"
/>
<ant:delete file="${maven.dist.dir}/${maven.final.name}-src.tar"/>
<!-- Use CRLF line endings for text files in zip archive if crlf filter
is set -->
<j:if test="${crlfFilter.length() > 0}">
<ant:fixcrlf srcdir="${maven.dist.src.archive.dir}"
eol="crlf" includes="${crlfFilter}"/>
</j:if>
<!-- Create a zip file -->
<ant:zip zipfile="${maven.dist.dir}/${maven.final.name}-src.zip">
<ant:zipfileset dir="${maven.dist.src.archive.dir}"/>
</ant:zip>
</goal>
<!-- ================================================================== -->
<!-- D E P L O Y D I S T R I B U T I O N -->
<!-- ================================================================== -->
<goal name="dist:multiproject-deploy" description="Deploy a multiproject distribution"
prereqs="dist:multiproject-deploy-bin,dist:multiproject-deploy-src" />
<goal name="dist:deploy" description="Deploy a distribution"
prereqs="dist:deploy-bin,dist:deploy-src" />
<goal name="dist:deploy-bin" description="Deploy a binary distribution" prereqs="dist:build-bin">
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}.tar.gz"
type="distribution-targz"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}.zip"
type="distribution-zip"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
</goal>
<goal name="dist:multiproject-deploy-bin" description="Deploy a binary multiproject distribution" prereqs="dist:multiproject-bin">
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}.tar.gz"
type="distribution-targz"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}.zip"
type="distribution-zip"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
</goal>
<goal name="dist:deploy-src" description="Deploy a source distribution" prereqs="dist:build-src">
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}-src.tar.gz"
type="distribution-src-targz"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}-src.zip"
type="distribution-src-zip"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
</goal>
<goal name="dist:multiproject-deploy-src" description="Deploy a source multiproject distribution" prereqs="dist:multiproject-src">
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}-src.tar.gz"
type="distribution-src-targz"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
<artifact:deploy
artifact="${maven.dist.dir}/${maven.final.name}-src.zip"
type="distribution-src-zip"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
</goal>
<!-- ================================================================== -->
<!-- D E P L O Y S N A P S H O T D I S T R I B U T I O N -->
<!-- ================================================================== -->
<goal name="dist:deploy-snapshot" description="Deploy a snapshot distribution"
prereqs="dist:deploy-bin-snapshot,dist:deploy-src-snapshot" />
<goal name="dist:deploy-bin-snapshot" description="Deploy a binary distribution" prereqs="dist:build-bin">
<artifact:deploy-snapshot
artifact="${maven.dist.dir}/${maven.final.name}.tar.gz"
type="distribution-targz"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
<artifact:deploy-snapshot
artifact="${maven.dist.dir}/${maven.final.name}.zip"
type="distribution-zip"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
</goal>
<goal name="dist:deploy-src-snapshot" description="Deploy a source distribution" prereqs="dist:build-src">
<artifact:deploy-snapshot
artifact="${maven.dist.dir}/${maven.final.name}-src.tar.gz"
type="distribution-src-targz"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
<artifact:deploy-snapshot
artifact="${maven.dist.dir}/${maven.final.name}-src.zip"
type="distribution-src-zip"
project="${pom}"
typeHandler="${distTypeHandler}"
/>
</goal>
<!-- ================================================================== -->
<!-- B I N A R Y M U L T I P R O J E C T D I S T R I B U T I O N -->
<!-- ================================================================== -->
<goal
name="dist:multiproject-bin"
prereqs="dist:build-setup"
description="Builds the binary multiproject distributions as tarball and zip">
<!-- we use plugin's own settings in first order. -->
<!-- if they are not provided we will try use use multiproject settings -->
<j:set var="multiprojectIncludes" value="${maven.dist.multiproject.includes}"/>
<j:if test="${multiprojectIncludes == null or multiprojectIncludes.length() eq 0}">
<maven:get var="multiprojectIncludes" plugin="maven-multiproject-plugin"
property="maven.multiproject.includes"/>
</j:if>
<j:set var="multiprojectExcludes" value="${maven.dist.multiproject.excludes}"/>
<j:if test="${multiprojectExcludes == null or multiprojectExcludes.length() eq 0}">
<maven:get var="multiprojectExcludes" plugin="maven-multiproject-plugin"
property="maven.multiproject.excludes"/>
</j:if>
<j:set var="multiprojectBasedir" value="${maven.idea.project.multiproject.basedir}"/>
<j:if test="${multiprojectBasedir == null or multiprojectBasedir.length() eq 0}">
<maven:get var="multiprojectBasedir" plugin="maven-multiproject-plugin"
property="maven.multiproject.basedir"/>
</j:if>
<maven:reactor
basedir="${multiprojectBasedir}"
banner="Generating dist materials for:"
includes="${multiprojectIncludes}"
excludes="${multiprojectExcludes}"
postProcessing="true"
goals="xdoc:init, jar:jar"
ignoreFailures="true"/>
<ant:echo>
+----------------------------------------------------------------+
| C R E A T I N G B I N A R Y M U L T I P R O J E C T D I S T |
+----------------------------------------------------------------+
</ant:echo>
<ant:delete dir="${maven.dist.bin.assembly.dir}"/>
<ant:mkdir dir="${maven.dist.bin.assembly.dir}"/>
<ant:echo>
+--------------------------------------------------------------+
| C O P Y I N G L I C E N S E S A N D D I S C L A I M E R S |
+--------------------------------------------------------------+
</ant:echo>
<ant:copy todir="${maven.dist.bin.assembly.dir}">
<ant:fileset dir=".">
<ant:include name="README.txt"/>
<ant:include name="LICENSE*"/>
<ant:include name="NOTICE*"/>
<ant:include name="INCUBATOR-DISCLAIMER.txt"/>
</ant:fileset>
</ant:copy>
<ant:echo>
+--------------------------------------------------------------+
| C O P Y I N G C H I L D P R O J E C T A R T I F A C T S |
+--------------------------------------------------------------+
</ant:echo>
<!-- Copy artifacts from all reactor project target directories -->
<ant:copy todir="${maven.dist.bin.assembly.dir}">
<j:forEach var="project" items="${reactorProjects}">
<ant:fileset dir="${project.mavenXml.parent}/target">
<ant:include name="*${project.artifactId}*.jar"/>
</ant:fileset>
</j:forEach>
</ant:copy>
<ant:echo>
+-----------------------------------------------------+
| C R E A T I N G S I T E D O C U M E N T A T I O N |
+-----------------------------------------------------+
</ant:echo>
<attainGoal name="multiproject:site"/>
<!-- Copy generated non-javadoc documentation -->
<j:set var="docsDest" value="${maven.docs.dest}"/>
<ant:copy todir="${maven.dist.bin.assembly.dir}/docs">
<ant:fileset dir="${docsDest}">
<ant:include name="**"/>
</ant:fileset>
</ant:copy>
<ant:echo>
+-----------------------------------------------------------+
| C R E A T I N G C O N S O L I D A T E D J A V A D O C S |
+-----------------------------------------------------------+
</ant:echo>
<javadoc destdir="${maven.dist.bin.assembly.dir}/docs/apidocs">
<j:forEach var="project" items="${reactorProjects}">
<packageset dir="${project.build.sourceDirectory}"/>
</j:forEach>
<classpath>
<fileset dir="${basedir}">
<include name="**/*.jar"/>
</fileset>
</classpath>
</javadoc>
<ant:echo>
+---------------------------------------------+
| C R E A T I N G B I N A R Y T A R B A L L |
+---------------------------------------------+
</ant:echo>
<!-- Create a tar.gz file -->
<ant:tar longfile="gnu" tarfile="${maven.dist.dir}/${maven.final.name}.tar">
<ant:tarfileset dir="${maven.dist.bin.archive.dir}"/>
</ant:tar>
<ant:gzip
zipfile="${maven.dist.dir}/${maven.final.name}.tar.gz"
src="${maven.dist.dir}/${maven.final.name}.tar"
/>
<ant:delete file="${maven.dist.dir}/${maven.final.name}.tar"/>
<ant:echo>
+----------------------------------------------+
| C R E A T I N G B I N A R Y Z I P F I L E |
+----------------------------------------------+
</ant:echo>
<!-- Create a zip file -->
<ant:zip zipfile="${maven.dist.dir}/${maven.final.name}.zip">
<ant:zipfileset dir="${maven.dist.bin.archive.dir}"/>
</ant:zip>
</goal>
<!-- ================================================================== -->
<!-- S O U R C E M U L T I P R O J E C T D I S T R I B U T I O N -->
<!-- ================================================================== -->
<goal
name="dist:multiproject-src"
prereqs="dist:build-setup"
description="Builds the source distributions as tarball and zip">
<ant:echo>
+----------------------------------------------------------------+
| C R E A T I N G S O U R C E M U L T I P R O J E C T D I S T |
+----------------------------------------------------------------+
</ant:echo>
<ant:delete dir="${maven.dist.src.assembly.dir}"/>
<ant:mkdir dir="${maven.dist.src.assembly.dir}"/>
<ant:echo>
+----------------------------------------------+
| C O P Y I N G A L L S O U R C E F I L E S |
+----------------------------------------------+
</ant:echo>
<ant:copy todir="${maven.dist.src.assembly.dir}">
<ant:fileset dir="${user.dir}">
<ant:include name="**/*"/>
<ant:exclude name="**/target/**"/>
<ant:exclude name="**/*.log*"/>
<ant:exclude name="**/*.ipr*"/>
<ant:exclude name="**/*.iml*"/>
<ant:exclude name="**/*.iws*"/>
<ant:exclude name="**/*.md5*"/>
<ant:exclude name="**/.???*"/>
</ant:fileset>
</ant:copy>
<ant:echo>
+---------------------------------------------+
| C R E A T I N G S O U R C E T A R B A L L |
+---------------------------------------------+
</ant:echo>
<!-- Create a tar.gz file -->
<ant:tar longfile="gnu" tarfile="${maven.dist.dir}/${maven.final.name}-src.tar">
<ant:tarfileset dir="${maven.dist.src.archive.dir}"/>
</ant:tar>
<ant:gzip
zipfile="${maven.dist.dir}/${maven.final.name}-src.tar.gz"
src="${maven.dist.dir}/${maven.final.name}-src.tar"
/>
<ant:delete file="${maven.dist.dir}/${maven.final.name}-src.tar"/>
<ant:echo>
+----------------------------------------------+
| C R E A T I N G S O U R C E Z I P F I L E |
+----------------------------------------------+
</ant:echo>
<!-- Create a zip file -->
<ant:zip zipfile="${maven.dist.dir}/${maven.final.name}-src.zip">
<ant:zipfileset dir="${maven.dist.src.archive.dir}"/>
</ant:zip>
</goal>
<goal
name="dist:multiproject"
prereqs="dist:multiproject-bin,dist:multiproject-src"
description="Build a complete distribution for a multiproject configuration.">
</goal>
</project>