blob: 87797be03481c3d8f42b79bec892f2e95006cb66 [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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 name="org.apache.easyant#easyant-core" xmlns:ea="antlib:org.apache.easyant"
xmlns:ivy="antlib:org.apache.ivy.ant">
<!-- Force compatibility to java 1.5 -->
<property name="compile.java.target.version" value="1.5"/>
<property name="compile.java.source.version" value="1.5"/>
<property name="target.documentation.dir" value="${basedir}/target/documentation"/>
<property name="xooki.temp.dir" value="${basedir}/target/temp-doc"/>
<property name="xooki.resources.include.pattern" value="style/**,images/**,sortable.js"/>
<property name="eadoc.documentation.dir" value="${xooki.temp.dir}"/>
<property name="project.ivy.instance" value="easyant.ivy.instance"/>
<property name="release.resolver" value="easyant-shared-modules"/>
<property name="shared.resolver" value="easyant-shared-modules"/>
<property name="retrieve.dependencies" value="true"/>
<property name="test.run.includes.pattern" value="**/*Test.class"/>
<property name="test.run.excludes.pattern" value="**/*BaseTest.class"/>
<!-- override main artifact retrieve pattern -->
<property name="retrieve.pattern.lib.main" value="${basedir}/lib/main/[artifact].[ext]"/>
<!-- Load external properties
/!\ This file will contains svn credentials so it should not be commited /!\
-->
<property file="module.properties"/>
<!--Loading build type -->
<ea:build module="build-std-java" rev="0.9"/>
<!-- Loading plugins -->
<ea:plugin module="xooki" rev="0.9" as="xooki"/>
<ea:plugin module="scm-svn" rev="0.9" as="svn"/>
<ea:plugin module="javadoc" rev="0.9" as="javadoc"/>
<ea:plugin module="distribution" rev="0.9" as="distribution"/>
<ea:plugin module="rat" rev="0.9" as="rat"/>
<extension-point name="distribution" description="create a distribution package" depends="package-jar:jar"/>
<property name="target.dist" value="${target}/dist"/>
<target name="test-setup" description="add extra information to classpath for unit tests">
<!--
our unit test requires the JDK tools.jar to run, which cannot be defined normally
in module.ivy dependencies.
Ant will try to find the tools.jar using java.home System property, but sometimes
this points to JDK, and sometimes to JRE.
See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4200300
-->
<augment id="run.test.classpath">
<path path="${java.class.path}"/>
</augment>
</target>
<target name="prepare-distribution">
<mkdir dir="${target.documentation.dir}"/>
<patternset id="easyant-files.patternset">
<exclude name="target/**"/>
<include name="lib/*.jar"/>
<include name="example/**"/>
<exclude name="example/**/bin/**"/>
<exclude name="example/**/lib/**"/>
<exclude name="example/**/target/**"/>
<include name="sample-easyant-ivysettings.xml"/>
<include name="easyant-conf.xml"/>
<include name="README"/>
<include name="NOTICE"/>
<include name="DISCLAIMER"/>
<include name="LICENSE"/>
</patternset>
<patternset id="easyant-exec.patternset">
<include name="bin/**"/>
</patternset>
</target>
<target name="stage-dist" depends="prepare-distribution, abstract-provisioning:provisioning">
<mkdir dir="${target.dist}"/>
<copy todir="${target.dist}">
<fileset dir="${basedir}">
<patternset refid="easyant-files.patternset"/>
<patternset refid="easyant-exec.patternset"/>
<!--copy ivysettings.xml for developpers -->
<patternset includes="ivysettings.xml"/>
</fileset>
</copy>
<mkdir dir="${target.dist}/lib/"/>
<copy todir="${target.dist}/lib">
<fileset dir="${basedir}/lib/main"/>
</copy>
<copy file="${target.main.artifact}" todir="${target.dist}/lib"/>
<!-- makes easyant scripts executable -->
<chmod perm="744" dir="${target.dist}">
<patternset refid="easyant-exec.patternset"/>
</chmod>
</target>
<target name="dist" depends="package-jar:jar, stage-dist"
description="update the dist directory (used for development)">
<!-- declare distribution fileset for use in packaging targets -->
<fileset id="easyant-dist.fileset" dir="${target.dist}">
<patternset refid="easyant-files.patternset"/>
<patternset refid="easyant-exec.patternset"/>
</fileset>
</target>
<!-- Create a zip for the binary distribution -->
<target name="package-bin-distribution" depends="distribution:init, populate-jar-repo, dist, xooki:generate"
description="package the binary distribution" extensionOf="distribution">
<echo message="Packaging binary distribution."/>
<property name="root.dir" value="${ivy.module}-${ivy.revision}"/>
<bundle destfile="${target.distributions}/${ivy.module}-${version}-bin">
<zipfileset dir="${target.dist}" prefix="${root.dir}">
<patternset refid="easyant-files.patternset"/>
</zipfileset>
<!-- make scripts executable -->
<zipfileset dir="${target.dist}" prefix="${root.dir}" filemode="744">
<patternset refid="easyant-exec.patternset"/>
</zipfileset>
<!-- ship the documentation -->
<zipfileset dir="${target.documentation.dir}" prefix="${root.dir}/doc"/>
</bundle>
</target>
<!-- Create a zip for the source distribution -->
<target name="package-src-distribution" depends="distribution:init" description="package the sources"
extensionOf="distribution">
<echo message="Packaging source distribution."/>
<property name="full.root.dir" value="${ivy.module}-${ivy.revision}-src"/>
<bundle destfile="${target.distributions}/${ivy.module}-${version}-src">
<zipfileset dir="${basedir}" prefix="${full.root.dir}">
<patternset>
<include name="src/**"/>
<include name="bin/**"/>
<include name="example/**"/>
<include name="module.ant"/>
<include name="module.ivy"/>
<include name="build.xml"/>
<include name="easyant-conf.xml"/>
<include name="ivysettings.xml"/>
<include name="ivysettings-bootstrap.xml"/>
<include name="sample-easyant-ivysettings.xml"/>
<include name="NOTICE"/>
<include name="DISCLAIMER"/>
<include name="README"/>
<include name="LICENSE"/>
<include name=".settings/**"/>
<include name=".project"/>
<include name=".classpath"/>
</patternset>
</zipfileset>
</bundle>
</target>
<macrodef name="install-module">
<attribute name="organisation"/>
<attribute name="module"/>
<attribute name="revision"/>
<sequential>
<ivy:install matcher="exactOrRegexp" from="apache-easyant-plugins" to="core" organisation="@{organisation}"
module="@{module}" revision="@{revision}" settingsRef="easyant.ivy.instance" overwrite="true"/>
</sequential>
</macrodef>
<macrodef name="install-buildtype">
<attribute name="organisation" default="org.apache.easyant.buildtypes"/>
<attribute name="module"/>
<attribute name="revision"/>
<sequential>
<install-module organisation="@{organisation}" module="@{module}" revision="@{revision}"/>
</sequential>
</macrodef>
<macrodef name="install-plugin">
<attribute name="organisation" default="org.apache.easyant.plugins"/>
<attribute name="module"/>
<attribute name="revision"/>
<sequential>
<install-module organisation="@{organisation}" module="@{module}" revision="@{revision}"/>
</sequential>
</macrodef>
<macrodef name="install-skeleton">
<attribute name="organisation" default="org.apache.easyant.skeletons"/>
<attribute name="module"/>
<attribute name="revision"/>
<sequential>
<install-module organisation="@{organisation}" module="@{module}" revision="@{revision}"/>
</sequential>
</macrodef>
<target name="populate-jar-repo"
description="fetch plugins and buildtypes from online repository and prepare them to be shipped within easyant">
<ea:configure-build-scoped-repository target="${basedir}/target/main/classes/" generateWrapperResoler="false"
name="core" settingsRef="easyant.ivy.instance"/>
<install-plugin module="abstract-.*" revision="0.9"/>
<install-plugin module="antcontrib-activator" revision="0.9"/>
<install-plugin module="antunit" revision="0.9"/>
<install-plugin module="build-tools" revision="0.9"/>
<install-plugin module="clean-std" revision="0.9"/>
<install-plugin module="compile-java" revision="0.9"/>
<install-plugin module="compile-test-java" revision="0.9"/>
<install-plugin module="default-version-strategy" revision="0.9"/>
<install-plugin module="deps-lib" revision="0.9"/>
<install-plugin module="distribution" revision="0.9"/>
<install-plugin module="documentation" revision="0.9"/>
<install-plugin module="easyant-plugin-publication" revision="0.9"/>
<install-plugin module="ivy-.*" revision="0.9"/>
<install-plugin module="javadoc" revision="0.9"/>
<install-plugin module="manifest" revision="0.9"/>
<install-plugin module="offline" revision="0.9"/>
<install-plugin module="phases-std" revision="0.9"/>
<install-plugin module="resources-std" revision="0.9"/>
<install-plugin module="run-java" revision="0.9"/>
<install-plugin module="skeleton" revision="0.9"/>
<install-plugin module="source-jar" revision="0.9"/>
<install-plugin module="test-junit" revision="0.9"/>
<install-buildtype module="build-std-java" revision="0.9"/>
<install-buildtype module="build-std-ant-plugin" revision="0.9"/>
<install-buildtype module="build-webapp-java" revision="0.9"/>
<install-buildtype module="meta-build" revision="0.9"/>
</target>
</project>