| <?xml version="1.0"?> |
| |
| <!-- |
| 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. |
| --> |
| <!-- |
| ======================================================================= |
| Build file to fetch optional libraries for Apache Ant |
| ======================================================================= |
| --> |
| <project name="fetch" default="all" basedir="."> |
| |
| <description> |
| This build file downloads JAR files that optional Ant tasks use, |
| and installs them in a location that is accessible the next time Ant runs. |
| |
| You can choose three locations, by going -Ddest=LOCATION on the command line |
| -Ddest=user user lib dir ${user.home}/.ant/lib |
| -Ddest=system ant lib dir ${ant.home}/lib |
| -Ddest=optional optional dir $${basedir}/lib/optional (for Ant developers) |
| |
| You may also need to set proxy settings. On Java 1.5, Ant tries to get |
| this from the OS, unless you use the -noproxy option. |
| |
| Proxies can be configured manually setting the JVM proxy values in the |
| ANT_OPTS environment variable. |
| |
| For example, to set the proxy up in the tcsh shell, the command would |
| be something like: |
| |
| For csh/tcsh: |
| setenv ANT_OPTS "-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080" |
| For bash: |
| export ANT_OPTS="-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080" |
| For Windows, set the environment variable in the appropriate dialog box |
| and open a new console. or, by hand |
| set ANT_OPTS = -Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 |
| </description> |
| |
| <!-- Give user a chance to override without editing this file |
| (and without typing -D each time it compiles it) --> |
| <property file="${user.home}/.ant/ant.properties"/> |
| <property name="lib.dir" location="lib"/> |
| <property name="optional.dir" location="${lib.dir}/optional"/> |
| <property name="userlib.dir" location="${user.home}/.ant/lib"/> |
| |
| <!-- Load in our properties table --> |
| <property file="${lib.dir}/libraries.properties"/> |
| |
| <!-- Temporary cache for working files --> |
| <property name="temp.dir" location="${user.home}/.ant/tempcache"/> |
| <property name="keep.temp.dir" value="true"/> |
| |
| <import file="get-m2.xml"/> |
| |
| <target name="pick-dest"> |
| <fail> |
| <condition> |
| <not> |
| <isset property="dest"/> |
| </not> |
| </condition>ERROR |
| Set -Ddest=LOCATION on the command line |
| -Ddest=user user lib dir ${user.home}/.ant/lib |
| -Ddest=system ant lib dir ${ant.home}/lib |
| -Ddest=optional optional dir $${basedir}/lib/optional (for Ant developers) |
| </fail> |
| |
| <condition property="dest.dir" |
| value="${lib.dir}"> |
| <equals arg1="${dest}" arg2="system"/> |
| </condition> |
| <condition property="dest.dir" |
| value="${optional.dir}"> |
| <equals arg1="${dest}" arg2="optional"/> |
| </condition> |
| <condition property="dest.dir" |
| value="${userlib.dir}"> |
| <equals arg1="${dest}" arg2="user"/> |
| </condition> |
| <fail unless="dest.dir">Unknown destination : ${dest}</fail> |
| <echo>Downloading to ${dest.dir}</echo> |
| <property name="m2.dest.dir" value="${dest.dir}"/> |
| </target> |
| |
| |
| <target name="macros" depends="pick-dest,get-m2" |
| xmlns:artifact="antlib:org.apache.maven.artifact.ant"> |
| <fail> |
| Cannot execute multiple targets due to the bug in Maven Ant tasks |
| <condition> |
| <contains string="${ant.project.invoked-targets}" substring=","/> |
| </condition> |
| </fail> |
| <macrodef name="f2"> |
| <attribute name="project"/> |
| <attribute name="archive" default="@{project}"/> |
| <attribute name="repository" default="${m2.repo}"/> |
| <attribute name="id" default="central"/> |
| <sequential> |
| <fail> |
| Unknown archive @{archive} -no property @{archive}.version defined in ${lib.dir}/libraries.properties. |
| <condition> |
| <not> |
| <isset property="@{archive}.version"/> |
| </not> |
| </condition> |
| </fail> |
| <artifact:dependencies pathID="@{archive}.path" useScope="runtime"> |
| <dependency groupId="@{project}" |
| artifactId="@{archive}" |
| version="${@{archive}.version}"> |
| <!-- exclude dependencies of ant-antunit (they should be in optional scope) --> |
| <exclusion groupId="org.apache.ant" artifactId="ant"/> |
| <exclusion groupId="org.apache.ant" artifactId="ant-launcher"/> |
| </dependency> |
| <artifact:remoteRepository url="@{repository}" id="@{id}"/> |
| </artifact:dependencies> |
| <!-- now we are left with the problem of getting the files into our directory --> |
| <copy todir="${dest.dir}"> |
| <path refid="@{archive}.path"/> |
| <flattenmapper/> |
| </copy> |
| </sequential> |
| </macrodef> |
| </target> |
| |
| <target name="nonm2-macros" depends="pick-dest"> |
| <macrodef name="get-ftp-file"> |
| <attribute name="host"/> |
| <attribute name="port" default="21"/> |
| <attribute name="remotedir"/> |
| <attribute name="filename"/> |
| <attribute name="localdir" default="${dest.dir}"/> |
| <attribute name="user" default="anonymous"/> |
| <attribute name="pw" default="anonymous"/> |
| <sequential> |
| <ftp server="@{host}" port="@{port}" userid="@{user}" password="@{pw}" passive="true" |
| remotedir="@{remotedir}" action="get" depends="true" preserveLastModified="true" |
| skipFailedTransfers="true"> |
| <fileset dir="@{localdir}"> |
| <include name="@{filename}"/> |
| </fileset> |
| </ftp> |
| </sequential> |
| </macrodef> |
| </target> |
| |
| |
| <!-- any init stuff --> |
| <target name="init" depends="macros"/> |
| |
| <target name="init-no-m2" depends="nonm2-macros"/> |
| |
| <target name="init-cache"> |
| <available property="temp.cache.already.exists" file="${temp.dir}" type="dir"/> |
| <condition property="user.wants.temp.cache"> |
| <and> |
| <isset property="keep.temp.dir"/> |
| <not> |
| <or> |
| <equals arg1="${keep.temp.dir}" arg2="false" casesensitive="false"/> |
| <equals arg1="${keep.temp.dir}" arg2="no" casesensitive="false"/> |
| <equals arg1="${keep.temp.dir}" arg2="off" casesensitive="false"/> |
| </or> |
| </not> |
| </and> |
| </condition> |
| <condition property="delete.temp.cache"> |
| <and> |
| <not> |
| <isset property="temp.cache.already.exists"/> |
| </not> |
| <not> |
| <isset property="user.wants.temp.cache"/> |
| </not> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="-setup-temp-cache" depends="init-cache" unless="temp.cache.already.exists" |
| description="Set up temporary cache for downloaded files"> |
| <mkdir dir="${temp.dir}"/> |
| </target> |
| |
| <target name="-cleanup-temp-cache" depends="init-cache" if="delete.temp.cache" |
| description="Get rid of the temporary cache directory"> |
| <delete dir="${temp.dir}"/> |
| </target> |
| |
| |
| <target name="diag" depends="init"> |
| <echoproperties/> |
| </target> |
| |
| <target name="antunit" |
| description="load AntUnit library" |
| depends="init"> |
| <f2 project="org.apache.ant" archive="ant-antunit"/> |
| </target> |
| |
| <target name="ivy" |
| description="load Ivy dependency manager" |
| depends="init"> |
| <f2 project="org.apache.ivy" archive="ivy"/> |
| </target> |
| |
| <target name="logging" |
| description="load logging libraries (Commons and Log4j)" |
| depends="init"> |
| <f2 project="log4j"/> |
| <f2 project="commons-logging" archive="commons-logging-api"/> |
| </target> |
| |
| <target name="junit" |
| description="load JUnit libraries" |
| depends="init"> |
| <f2 project="junit"/> |
| <f2 project="org.hamcrest" archive="hamcrest-library"/> |
| </target> |
| |
| <target name="xml" |
| description="load full XML libraries (Xalan and xml-resolver)" |
| depends="init"> |
| <f2 project="xalan"/> |
| <f2 project="xml-resolver"/> |
| </target> |
| |
| <target name="networking" |
| description="load networking libraries (commons-net and JSch)" |
| depends="init"> |
| <f2 project="commons-net"/> |
| <f2 project="com.jcraft" archive="jsch"/> |
| </target> |
| |
| <target name="regexp" |
| description="load regexp libraries" |
| depends="init"> |
| <f2 project="jakarta-regexp"/> |
| <f2 project="oro"/> |
| </target> |
| |
| <target name="antlr" |
| description="load ANother Tool for Language Recognition (ANTLR)" |
| depends="init"> |
| <f2 project="antlr"/> |
| </target> |
| |
| <target name="bcel" |
| description="load Byte Code Engineering Library (BCEL)" |
| depends="init"> |
| <f2 project="bcel"/> |
| </target> |
| |
| <target name="jdepend" |
| description="load JDepend libraries" |
| depends="init"> |
| <f2 project="jdepend"/> |
| </target> |
| |
| <target name="bsf" |
| description="load Bean Scripting Framework" |
| depends="init"> |
| <f2 project="bsf"/> |
| </target> |
| |
| <target name="jruby" |
| description="load JRuby" |
| depends="bsf"> |
| <f2 project="org.jruby" archive="jruby"/> |
| </target> |
| |
| <target name="beanshell" |
| description="load BeanShell support" |
| depends="bsf"> |
| <f2 project="org.beanshell" archive="bsh"/> |
| <f2 project="org.beanshell" archive="bsh-core"/> |
| </target> |
| |
| <target name="jython" |
| description="load Jython" |
| depends="bsf"> |
| <f2 project="org.python" archive="jython"/> |
| </target> |
| |
| <target name="rhino" |
| description="load Rhino" |
| depends="bsf"> |
| <f2 project="org.mozilla" archive="rhino"/> |
| </target> |
| |
| <target name="script" |
| description="load script languages (except Jython)" |
| depends="bsf,jruby,beanshell,rhino"/> |
| |
| <target name="debugging" |
| description="internal Ant debugging" |
| depends="init"> |
| <f2 project="which"/> |
| </target> |
| |
| <target name="javamail" |
| description="load Java Mail" |
| depends="init"> |
| <!-- We only need this one dependency as per |
| the project doc https://javaee.github.io/javamail/#Download_JavaMail_Release |
| This alone should bring in all necessary dependencies (including the API |
| jars and the activation jars --> |
| <f2 project="com.sun.mail" archive="javax.mail"/> |
| </target> |
| |
| <target name="jspc" |
| description="load Jasper" |
| depends="init"> |
| <f2 project="tomcat" archive="jasper-compiler"/> |
| <f2 project="tomcat" archive="jasper-runtime"/> |
| <f2 project="javax.servlet" archive="servlet-api"/> |
| </target> |
| |
| <target name="jai" |
| description="load Java Advanced Imaging" |
| depends="init"> |
| <f2 project="javax.media" archive="jai-core" id="jboss" |
| repository="https://repository.jboss.org/nexus/content/groups/public/"/> |
| <f2 project="com.sun.media" archive="jai-codec" id="jboss" |
| repository="https://repository.jboss.org/nexus/content/groups/public/"/> |
| </target> |
| |
| <target name="netrexx" |
| description="load NetRexx compiler" |
| depends="init-no-m2,-setup-temp-cache,-fetch-netrexx,-fetch-netrexx-no-commons-net"> |
| <checksum file="${temp.dir}/NetRexx.zip" algorithm="SHA-256" property="${netrexx.sha256}" verifyProperty="netrexx.hash.matches"/> |
| <fail message="NetRexx.zip fetched via ftp has an unexpected SHA-256 checksum, the file may have been tampered with"> |
| <condition> |
| <not> |
| <istrue value="${netrexx.hash.matches}"/> |
| </not> |
| </condition> |
| </fail> |
| <copy todir="${dest.dir}" flatten="true"> |
| <zipfileset src="${temp.dir}/NetRexx.zip"> |
| <include name="NetRexx\lib\NetRexxC.jar"/> |
| <include name="NetRexx\browse\license.txt"/> |
| </zipfileset> |
| </copy> |
| <antcall target="-cleanup-temp-cache"/> |
| </target> |
| |
| <available property="have.commons.net" classname="org.apache.commons.net.ftp.FTPClientConfig"/> |
| |
| <target name="-fetch-netrexx" if="have.commons.net"> |
| <get-ftp-file host="ftp.software.ibm.com" remotedir="/software/awdtools/netrexx" |
| filename="NetRexx.zip" localdir="${temp.dir}"/> |
| </target> |
| |
| <target name="-fetch-netrexx-no-commons-net" unless="have.commons.net"> |
| <get src="ftp://ftp.software.ibm.com/software/awdtools/netrexx/NetRexx.zip" |
| dest="${temp.dir}/NetRexx.zip" skipexisting="true"/> |
| </target> |
| |
| <target name="all" |
| description="load all the libraries (except jython)" |
| depends="antunit,ivy,logging,junit,xml,networking,regexp,antlr,bcel,jdepend,bsf,debugging,script,javamail,jspc,jai,netrexx"/> |
| |
| </project> |