| <!-- |
| 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 |
| |
| https://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="ivy" default="test-report" xmlns:ivy="antlib:org.apache.ivy.ant"> |
| |
| <property environment="env"/> |
| <property file="version.properties"/> |
| <property file="build.properties"/> |
| |
| <property name="final.name" value="ivy.jar"/> |
| <!-- Java 7 runs into TLS protocol issues when dealing with repositories |
| that no longer support older protocols --> |
| <condition property="java.sysprop.https.protocols" value="" else="TLSv1.2"> |
| <javaversion atleast="1.8"/> |
| </condition> |
| |
| |
| <target name="init-ivy-user-home" unless="ivy.use.local.home"> |
| <condition property="ivy.home" value="${env.IVY_HOME}"> |
| <isset property="env.IVY_HOME"/> |
| </condition> |
| <property name="ivy.home" value="${user.home}/.ivy2"/> |
| </target> |
| |
| <target name="init-ivy-local-home" if="ivy.use.local.home"> |
| <property name="ivy.home" value="${basedir}/.ivy2"/> |
| </target> |
| |
| <target name="init-ivy-home" depends="init-ivy-user-home,init-ivy-local-home"/> |
| |
| <target name="init-ivy" depends="compile-bootstrap,init-ivy-home"> |
| <taskdef resource="org/apache/ivy/ant/antlib.xml" |
| uri="antlib:org.apache.ivy.ant"> |
| <classpath> |
| <pathelement location="${core.classes.build.dir}"/> |
| <pathelement location="${bootstrap.classes.build.dir}"/> |
| </classpath> |
| </taskdef> |
| |
| <ivy:configure override="true"/> |
| </target> |
| |
| <target name="install" depends="jar" |
| description="build Ivy and install it in Ivy user home for builds using Ivy user home to load Ivy jar"> |
| <property name="ivy.jar.file" value="${ivy.home}/jars/ivy.jar"/> |
| <copy file="${artifacts.build.dir}/jars/${final.name}" tofile="${ivy.jar.file}"/> |
| </target> |
| |
| <target name="install-ant" depends="jar" |
| description="build Ivy and install it in Ant home lib"> |
| <condition property="ant.home" value="${env.ANT_HOME}"> |
| <isset property="env.ANT_HOME"/> |
| </condition> |
| <fail unless="ant.home" message="ANT_HOME environment variable or ant.home property required"/> |
| <copy file="${artifacts.build.dir}/jars/${final.name}" tofile="${ant.home}/lib/ivy.jar"/> |
| </target> |
| |
| <!-- ================================================================= |
| PREPARATION, CLEANING AND FLAGS TASKS |
| ================================================================= --> |
| <target name="init"> |
| <path id="lib.classpath"> |
| <fileset dir="${lib.dir}"> |
| <include name="*.jar"/> |
| </fileset> |
| </path> |
| <path id="build.bootstrap.classpath"> |
| <pathelement location="${core.classes.build.dir}"/> |
| </path> |
| <path id="build.ant.classpath"> |
| <pathelement location="${core.classes.build.dir}"/> |
| <path refid="lib.classpath"/> |
| </path> |
| <path id="build.optional.classpath"> |
| <path refid="build.ant.classpath"/> |
| </path> |
| <path id="run.classpath"> |
| <pathelement location="${core.classes.build.dir}"/> |
| <pathelement location="${ant.classes.build.dir}"/> |
| <pathelement location="${optional.classes.build.dir}"/> |
| <path refid="lib.classpath"/> |
| </path> |
| <path id="test.classpath"> |
| <fileset dir="${lib.dir}" /> |
| <pathelement location="${core.classes.build.dir}"/> |
| <pathelement location="${ant.classes.build.dir}"/> |
| <pathelement location="${optional.classes.build.dir}"/> |
| <pathelement path="${test.build.dir}"/> |
| </path> |
| <path id="javadoc.test.classpath"> |
| <path refid="run.classpath"/> |
| <pathelement path="${test.build.dir}"/> |
| </path> |
| </target> |
| |
| <target name="prepare" depends="init"> |
| <mkdir dir="${classes.build.dir}"/> |
| <mkdir dir="${core.classes.build.dir}"/> |
| <mkdir dir="${bootstrap.classes.build.dir}"/> |
| <mkdir dir="${ant.classes.build.dir}"/> |
| <mkdir dir="${optional.classes.build.dir}"/> |
| <mkdir dir="${all.classes.build.dir}"/> |
| <mkdir dir="${test.build.dir}"/> |
| <mkdir dir="${artifacts.build.dir}"/> |
| <mkdir dir="${test.report.dir}"/> |
| </target> |
| |
| <target name="clean" description="delete all generated files keeping sources only"> |
| <delete dir="${classes.build.dir}"/> |
| <delete dir="${test.build.dir}"/> |
| <delete dir="${artifacts.build.dir}"/> |
| <delete dir="${ivy.report.dir}"/> |
| <delete dir="${test.report.dir}"/> |
| <delete dir="${javadoc.build.dir}"/> |
| <delete dir="${doc.build.dir}"/> |
| <delete dir="${build.dir}"/> |
| </target> |
| |
| <target name="clean-lib"> |
| <delete dir="${lib.dir}"/> |
| </target> |
| |
| <target name="clean-ivy-cache" depends="init-ivy-home"> |
| <delete dir="${ivy.home}/cache"/> |
| </target> |
| |
| <target name="clean-ivy-home" depends="init-ivy-home"> |
| <delete dir="${ivy.home}"/> |
| </target> |
| |
| <target name="clean-examples" description="clean all examples"> |
| <subant target="clean" failonerror="false"> |
| <fileset dir="${example.dir}" includes="**/build.xml"/> |
| </subant> |
| </target> |
| |
| <target name="clean-all" depends="clean-examples,clean,clean-lib"/> |
| |
| <target name="/noresolve" description="use to skip dependency resolution"> |
| <property name="no.resolve" value="true"/> |
| </target> |
| |
| <target name="/notest" description="use to skip tests"> |
| <property name="skip.test" value="true"/> |
| </target> |
| |
| <target name="/nojavadoc" description="use to skip javadoc"> |
| <property name="skip.javadoc" value="true"/> |
| </target> |
| |
| <target name="/localivy" description="use a local ivy home"> |
| <property name="ivy.use.local.home" value="true"/> |
| </target> |
| |
| <target name="/offline" depends="/noresolve" description="use to indicate no internet connection is available"> |
| <property name="offline" value="true"/> |
| </target> |
| |
| <target name="default-version"> |
| <tstamp> |
| <format property="pubdate" pattern="yyyyMMddHHmmss"/> |
| </tstamp> |
| <property name="version.prefix" value="${target.ivy.version}-local-"/> |
| <property name="build.version" value="${version.prefix}${pubdate}"/> |
| <property name="bundle.version" value="${target.ivy.bundle.version}.${target.ivy.bundle.version.qualifier}${pubdate}"/> |
| </target> |
| |
| <!-- ================================================================= |
| DEPENDENCY MNGT, COMPILATION AND JAR |
| ================================================================= --> |
| <target name="resolve" depends="init-ivy" unless="no.resolve"> |
| <ivy:retrieve conf="default,test" pattern="${lib.dir}/[artifact].[ext]" sync="yes"/> |
| </target> |
| |
| <target name="compile-core" depends="prepare"> |
| <javac srcdir="${src.dir}" |
| destdir="${core.classes.build.dir}" |
| sourcepath="" |
| source="${ivy.minimum.javaversion}" |
| target="${ivy.minimum.javaversion}" |
| debug="${debug.mode}" |
| includeantruntime="no"> |
| <excludesfile name="ant.patterns"/> |
| <excludesfile name="optional.patterns"/> |
| </javac> |
| <copy todir="${core.classes.build.dir}" includeEmptyDirs="false"> |
| <fileset dir="${src.dir}"> |
| <exclude name="**/*.java"/> |
| <excludesfile name="ant.patterns"/> |
| <excludesfile name="optional.patterns"/> |
| </fileset> |
| </copy> |
| |
| <!-- copy settings files for backward compatibility with ivyconf naming --> |
| <copy file="${core.classes.build.dir}/org/apache/ivy/core/settings/ivysettings-local.xml" |
| tofile="${core.classes.build.dir}/org/apache/ivy/core/settings/ivyconf-local.xml"/> |
| <copy file="${core.classes.build.dir}/org/apache/ivy/core/settings/ivysettings-default-chain.xml" |
| tofile="${core.classes.build.dir}/org/apache/ivy/core/settings/ivyconf-default-chain.xml"/> |
| <copy file="${core.classes.build.dir}/org/apache/ivy/core/settings/ivysettings-main-chain.xml" |
| tofile="${core.classes.build.dir}/org/apache/ivy/core/settings/ivyconf-main-chain.xml"/> |
| <copy file="${core.classes.build.dir}/org/apache/ivy/core/settings/ivysettings-public.xml" |
| tofile="${core.classes.build.dir}/org/apache/ivy/core/settings/ivyconf-public.xml"/> |
| <copy file="${core.classes.build.dir}/org/apache/ivy/core/settings/ivysettings-shared.xml" |
| tofile="${core.classes.build.dir}/org/apache/ivy/core/settings/ivyconf-shared.xml"/> |
| <copy file="${core.classes.build.dir}/org/apache/ivy/core/settings/ivysettings.xml" |
| tofile="${core.classes.build.dir}/org/apache/ivy/core/settings/ivyconf.xml"/> |
| </target> |
| |
| <!-- Build the Ant tasks with the current Ant runtime --> |
| <target name="compile-bootstrap" depends="compile-core"> |
| <javac srcdir="${src.dir}" |
| destdir="${bootstrap.classes.build.dir}" |
| sourcepath="" |
| classpathref="build.bootstrap.classpath" |
| source="${ivy.minimum.javaversion}" |
| target="${ivy.minimum.javaversion}" |
| debug="${debug.mode}" |
| includeantruntime="yes"> |
| <includesfile name="ant.patterns"/> |
| </javac> |
| <copy todir="${bootstrap.classes.build.dir}" includeEmptyDirs="false"> |
| <fileset dir="${src.dir}"> |
| <includesfile name="ant.patterns"/> |
| <exclude name="**/*.java"/> |
| </fileset> |
| </copy> |
| </target> |
| |
| <!-- Build the Ant tasks with the minimal Ant runtime --> |
| <target name="compile-ant" depends="compile-core,resolve"> |
| <javac srcdir="${src.dir}" |
| destdir="${ant.classes.build.dir}" |
| sourcepath="" |
| classpathref="build.ant.classpath" |
| source="${ivy.minimum.javaversion}" |
| target="${ivy.minimum.javaversion}" |
| debug="${debug.mode}" |
| includeantruntime="no"> |
| <includesfile name="ant.patterns"/> |
| </javac> |
| <copy todir="${ant.classes.build.dir}" includeEmptyDirs="false"> |
| <fileset dir="${src.dir}"> |
| <includesfile name="ant.patterns"/> |
| <exclude name="**/*.java"/> |
| </fileset> |
| </copy> |
| |
| <!-- copy antlib for backward compatibility with fr.jayasoft.ivy package --> |
| <copy file="${ant.classes.build.dir}/org/apache/ivy/ant/antlib.xml" |
| todir="${ant.classes.build.dir}/fr/jayasoft/ivy/ant"/> |
| </target> |
| |
| <target name="compile-optional" depends="compile-ant"> |
| <javac srcdir="${src.dir}" |
| destdir="${optional.classes.build.dir}" |
| sourcepath="" |
| classpathref="build.optional.classpath" |
| source="${ivy.minimum.javaversion}" |
| target="${ivy.minimum.javaversion}" |
| debug="${debug.mode}" |
| includeantruntime="no"> |
| <includesfile name="optional.patterns"/> |
| <includesfile name="ant.patterns"/> |
| </javac> |
| <copy todir="${core.classes.build.dir}" includeEmptyDirs="false"> |
| <fileset dir="${src.dir}"> |
| <includesfile name="optional.patterns"/> |
| <exclude name="**/*.java"/> |
| </fileset> |
| </copy> |
| </target> |
| |
| <!-- ================================================================= |
| Create the two jar files (Ivy core and Ivy core + Ant tasks) |
| ================================================================= --> |
| <target name="jar" depends="compile-optional,default-version" description="Create Jar files"> |
| <!-- identify compiled ivy version --> |
| <echo message="version=${build.version}${line.separator}" file="${core.classes.build.dir}/module.properties" append="true"/> |
| <echo message="date=${pubdate}${line.separator}" file="${core.classes.build.dir}/module.properties" append="true"/> |
| |
| <mkdir dir="${artifacts.build.dir}/jars/"/> |
| |
| <!-- |
| there is a default Bundle-Version attribute in the source MANIFEST, used to ease |
| development in eclipse. |
| We remove this line to make sure we get the Bundle-Version as set in the jar task |
| --> |
| <copy file="${basedir}/META-INF/MANIFEST.MF" tofile="${artifacts.build.dir}/MANIFEST.MF"> |
| <filterchain> |
| <replaceregex pattern="Bundle-Version:.*" replace="Bundle-Version: ${bundle.version}" byline="true"/> |
| </filterchain> |
| </copy> |
| |
| <copy todir="${all.classes.build.dir}"> |
| <fileset dir="${core.classes.build.dir}"/> |
| <fileset dir="${ant.classes.build.dir}"/> |
| <fileset dir="${optional.classes.build.dir}"/> |
| </copy> |
| |
| <jar destfile="${artifacts.build.dir}/jars/${final.name}" |
| manifest="${artifacts.build.dir}/MANIFEST.MF"> |
| <metainf dir="${basedir}" includes="LICENSE,NOTICE"/> |
| <manifest> |
| <attribute name="Specification-Title" value="Apache Ivy with Ant tasks"/> |
| <attribute name="Specification-Version" value="${build.version}"/> |
| <attribute name="Specification-Vendor" value="Apache Software Foundation"/> |
| <attribute name="Implementation-Title" value="org.apache.ivy"/> |
| <attribute name="Implementation-Version" value="${build.version}"/> |
| <attribute name="Implementation-Vendor" value="Apache Software Foundation"/> |
| <attribute name="Implementation-Vendor-Id" value="org.apache"/> |
| <attribute name="Extension-name" value="org.apache.ivy"/> |
| <attribute name="Build-Version" value="${build.version}"/> |
| </manifest> |
| <fileset dir="${all.classes.build.dir}"/> |
| </jar> |
| <!-- copy main jar to ease its use as an OSGi bundle --> |
| <copy file="${artifacts.build.dir}/jars/${final.name}" |
| tofile="${artifacts.build.dir}/org.apache.ivy_${bundle.version}.jar"/> |
| |
| <!-- clean generated module properties file --> |
| <delete file="${core.classes.build.dir}/module.properties"/> |
| </target> |
| |
| <!-- ================================================================= |
| PUBLISH LOCAL |
| ================================================================= --> |
| <target name="fixcrlf"> |
| <property name="eol.native.includes" |
| value="**/*.html,**/*.json,**/*.java,**/*.xml,**/*.txt,**/*.MF,**/*.properties,**/*.patterns,**/*.pom,**/*.xsl,**/*.css"/> |
| <property name="eol.native.excludes" |
| value="build/**,bin/**,lib/**"/> |
| |
| <fileset id="eol.native.fileset" |
| dir="${basedir}" |
| includes="${eol.native.includes}" |
| excludes="${eol.native.excludes}"/> |
| |
| <fixcrlf srcdir="${basedir}" |
| includes="${eol.native.includes}" |
| excludes="${eol.native.excludes}"/> |
| </target> |
| |
| <target name="sources" depends="default-version" description="Create source archive files"> |
| <mkdir dir="${artifacts.build.dir}/sources/"/> |
| <jar destfile="${artifacts.build.dir}/sources/${final.name}"> |
| <metainf dir="${basedir}" includes="LICENSE,NOTICE"/> |
| <manifest> |
| <attribute name="Specification-Title" value="Apache Ivy Sources"/> |
| <attribute name="Specification-Version" value="${build.version}"/> |
| <attribute name="Specification-Vendor" value="Apache Software Foundation"/> |
| </manifest> |
| <fileset dir="${src.dir}"/> |
| </jar> |
| </target> |
| |
| <target name="publish-local" depends="jar,sources" description="publishes Ivy to Ivy local repository"> |
| <ivy:publish resolver="local" pubrevision="${build.version}" |
| artifactsPattern="${artifacts.build.dir}/[type]s/[artifact].[ext]" |
| forcedeliver="true"/> |
| </target> |
| |
| <!-- ================================================================= |
| TESTS |
| ================================================================= --> |
| <target name="build-test" depends="jar"> |
| <javac srcdir="${test.dir}" |
| destdir="${test.build.dir}" |
| classpathref="run.classpath" |
| source="${ivy.minimum.javaversion}" |
| target="${ivy.minimum.javaversion}" |
| debug="${debug.mode}" |
| encoding="UTF-8" |
| includeantruntime="no"/> |
| <copy todir="${test.build.dir}"> |
| <fileset dir="${test.dir}"> |
| <exclude name="**/*.java"/> |
| </fileset> |
| </copy> |
| </target> |
| |
| <target name="build-custom-resolver-jar" depends="jar"> |
| <mkdir dir="${build.dir}/custom-classpath"/> |
| <javac srcdir="${basedir}/test/custom-classpath" |
| destdir="${build.dir}/custom-classpath" |
| classpathref="run.classpath" |
| source="${ivy.minimum.javaversion}" |
| target="${ivy.minimum.javaversion}" |
| debug="${debug.mode}" |
| includeantruntime="no"/> |
| <jar destfile="${test.dir}/org/apache/ivy/core/settings/custom-resolver.jar" |
| basedir="${build.dir}/custom-classpath"/> |
| </target> |
| |
| <target name="init-tests-offline" if="offline"> |
| <fileset id="test.fileset" dir="${test.dir}"> |
| <include name="**/${test.class.pattern}.java"/> |
| <exclude name="**/Abstract*Test.java"/> |
| <not><contains text="remote.test"/></not> |
| </fileset> |
| </target> |
| |
| <target name="init-tests-online" unless="offline"> |
| <fileset id="test.fileset" dir="${test.dir}"> |
| <include name="**/${test.class.pattern}.java"/> |
| <exclude name="**/Abstract*Test.java"/> |
| </fileset> |
| </target> |
| |
| <target name="init-tests" depends="init-tests-offline,init-tests-online"/> |
| |
| <target name="prepare-osgi-tests" depends="resolve" unless="skip.test"> |
| <ant dir="${basedir}/test/test-repo" target="generate-bundles"/> |
| </target> |
| |
| <target name="prepare-test-jar-repositories" unless="skip.test"> |
| <mkdir dir="${basedir}/test/jar-repos"/> |
| <jar destfile="${basedir}/test/jar-repos/jarrepo1.jar" > |
| <fileset dir="${basedir}/test/repositories/1"/> |
| </jar> |
| <jar destfile="${basedir}/test/jar-repos/jarrepo1_subdir.jar"> |
| <fileset dir="${basedir}/test/repositories" includes="1/**/*"/> |
| </jar> |
| </target> |
| |
| <target name="init-jacoco" depends="jar" unless="skip.test"> |
| <ivy:cachepath organisation="org.jacoco" module="org.jacoco.ant" revision="0.8.3" |
| inline="true" conf="default" pathid="jacoco.classpath" log="download-only"/> |
| <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml" |
| classpathref="jacoco.classpath"/> |
| </target> |
| |
| <target name="test-internal" depends="build-test,init-tests,prepare-osgi-tests,prepare-test-jar-repositories,init-jacoco" unless="skip.test"> |
| <mkdir dir="${test.xml.dir}"/> |
| |
| <!-- multiple runs into the same logfile let the later report generation fail --> |
| <delete file="${jacoco.log}"/> |
| <jacoco:coverage xmlns:jacoco="antlib:org.jacoco.ant" destfile="${jacoco.log}" |
| exclclassloader="sun.reflect.DelegatingClassLoader:javassist.Loader"> |
| <junit |
| haltonfailure="off" |
| haltonerror="off" |
| errorproperty="test.failed" |
| failureproperty="test.failed" |
| showoutput="no" |
| printsummary="yes" |
| includeantruntime="no" |
| dir="${basedir}" |
| tempdir="${build.dir}" |
| fork="true"> |
| <classpath> |
| <path refid="test.classpath"/> |
| </classpath> |
| |
| <!-- pass the proxy properties to the forked junit process to use correct proxy --> |
| <syspropertyset> |
| <propertyref prefix="http"/> |
| </syspropertyset> |
| <!-- We select specific HTTPS protocols, based on the Java version we are running |
| on --> |
| <sysproperty key="https.protocols" value="${java.sysprop.https.protocols}"/> |
| |
| <!-- Added this to test IVY-65 --> |
| <jvmarg value="-Duser.region=TR"/> |
| <jvmarg value="-Duser.language=tr"/> |
| |
| <formatter type="xml"/> |
| <batchtest todir="${test.xml.dir}"> |
| <fileset refid="test.fileset"/> |
| </batchtest> |
| </junit> |
| </jacoco:coverage> |
| </target> |
| |
| <target name="test" depends="test-internal" description="Run the test"> |
| <fail if="test.failed" |
| message="At least one test has failed. See logs (in ${test.xml.dir}) for details (use the target test-report to run the test with a report)"/> |
| </target> |
| |
| <!-- ================================================================= |
| REPORTS AND DOCUMENTATION |
| ================================================================= --> |
| <target name="test-report" depends="test-internal" unless="skip.test" |
| description="run tests with instrumentation and generate coverage report"> |
| <junitreport todir="${test.xml.dir}"> |
| <fileset dir="${test.xml.dir}"> |
| <include name="TEST-*.xml"/> |
| </fileset> |
| <report format="frames" todir="${test.report.dir}"/> |
| </junitreport> |
| |
| <mkdir dir="${coverage.report.dir}"/> |
| <jacoco:report xmlns:jacoco="antlib:org.jacoco.ant"> |
| <executiondata> |
| <file file="${jacoco.log}"/> |
| </executiondata> |
| |
| <structure name="Ivy"> |
| <classfiles> |
| <fileset dir="${classes.build.dir}"/> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${src.dir}"/> |
| </sourcefiles> |
| </structure> |
| |
| <html destdir="${coverage.report.dir}"/> |
| </jacoco:report> |
| |
| <fail if="test.failed" |
| message="At least one test has failed. See logs (in ${test.xml.dir}) or report (in ${test.report.dir})"/> |
| </target> |
| |
| <target name="coverage-report" depends="test-report"/> |
| |
| <target name="ivy-report" depends="resolve"> |
| <mkdir dir="${ivy.report.dir}"/> |
| <ivy:report todir="${ivy.report.dir}"/> |
| </target> |
| |
| <target name="init-japicmp" depends="jar" unless="skip.test"> |
| <ivy:cachepath organisation="com.github.siom79.japicmp" module="japicmp-ant-task" revision="0.13.0" |
| inline="true" conf="default" pathid="japicmp.classpath" log="download-only"/> |
| <taskdef uri="antlib:japicmp.ant" resource="japicmp/ant/antlib.xml" |
| classpathref="japicmp.classpath"/> |
| <ivy:cachepath organisation="org.apache.ivy" module="ivy" revision="${ivy.api.reference}" |
| inline="true" conf="optional" pathid="ivyrefdeps.classpath" log="download-only"/> |
| <ivy:cachefileset organisation="org.apache.ivy" module="ivy" revision="${ivy.api.reference}" |
| inline="true" conf="master" setid="ivyref.fileset" log="download-only"/> |
| <pathconvert property="ivyref.name" refid="ivyref.fileset"/> |
| </target> |
| |
| <target name="/japicmp-all" description="report status of all public APIs"> |
| <property name="japicmp.all" value="true"/> |
| </target> |
| |
| <target name="/japicmp-changed" description="report all changed public APIs"> |
| <property name="japicmp.changed" value="true"/> |
| </target> |
| |
| <target name="japicmp" depends="init-japicmp" unless="skip.test"> |
| <property name="japicmp.all" value="false"/> |
| <property name="japicmp.changed" value="false"/> |
| <condition property="japicmp.binary" value="true" else="false"> |
| <not> |
| <or> |
| <istrue value="${japicmp.all}"/> |
| <istrue value="${japicmp.changed}"/> |
| </or> |
| </not> |
| </condition> |
| <japicmp:japicmp xmlns:japicmp="antlib:japicmp.ant" |
| oldjar="${ivyref.name}" |
| newjar="${artifacts.build.dir}/jars/${final.name}" |
| oldclasspathref="ivyrefdeps.classpath" |
| newclasspathref="lib.classpath" |
| onlybinaryincompatible="${japicmp.binary}" |
| onlymodified="${japicmp.changed}" |
| htmloutputfile="${reports.dir}/japicmp.html"/> |
| </target> |
| |
| <target name="javadoc" depends="init" unless="skip.javadoc"> |
| <tstamp> |
| <format pattern="2007-yyyy" property="years"/> |
| </tstamp> |
| <property name="copyright" value="Copyright &copy;${years} The Apache Software Foundation, Licensed under <a href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>."/> |
| <property name="title" value="Apache Ivy&trade; dependency manager ${target.ivy.version} API"/> |
| <javadoc destdir="${javadoc.build.dir}" |
| useexternalfile="true" |
| windowtitle="Apache Ivy&trade;" |
| doctitle="${title}" |
| bottom="${copyright}" |
| classpathref="lib.classpath"> |
| <fileset dir="${src.dir}" includes="**/*.java"/> |
| <arg value="-tag"/> |
| <arg value="pre:a:Precondition:"/> |
| </javadoc> |
| </target> |
| |
| <target name="javadoc-test" depends="init" unless="skip.javadoc"> |
| <tstamp> |
| <format pattern="2007-yyyy" property="years"/> |
| </tstamp> |
| <property name="copyright" value="Copyright &copy;${years} The Apache Software Foundation, Licensed under <a href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>."/> |
| <property name="title" value="Apache Ivy&trade; dependency manager ${target.ivy.version} API"/> |
| <javadoc destdir="${test.javadoc.build.dir}" |
| useexternalfile="true" |
| windowtitle="Apache Ivy&trade;" |
| doctitle="${title}" |
| bottom="${copyright}" |
| classpathref="javadoc.test.classpath"> |
| <fileset dir="${test.dir}" includes="**/*.java"/> |
| </javadoc> |
| </target> |
| |
| <target name="init-checkstyle" depends="jar"> |
| <ivy:cachepath organisation="com.puppycrawl.tools" module="checkstyle" revision="6.19" |
| inline="true" conf="default" pathid="checkstyle.classpath" log="download-only"/> |
| <taskdef uri="antlib:com.puppycrawl.tools.checkstyle.ant" |
| resource="com/puppycrawl/tools/checkstyle/ant/antlib.xml" classpathref="checkstyle.classpath"/> |
| </target> |
| |
| <!-- Checks Ivy codebase according to ${checkstyle.src.dir}/checkstyle-config --> |
| <target name="checkstyle-internal" depends="init-checkstyle"> |
| <mkdir dir="${checkstyle.report.dir}"/> |
| <cs:checkstyle xmlns:cs="antlib:com.puppycrawl.tools.checkstyle.ant" |
| config="${checkstyle.src.dir}/checkstyle-config" |
| failOnViolation="false" failureProperty="checkstyle.failed"> |
| <classpath> |
| <path refid="run.classpath"/> |
| </classpath> |
| <formatter type="xml" toFile="${checkstyle.report.dir}/checkstyle.xml"/> |
| <fileset dir="${src.dir}"> |
| <include name="**/*.java"/> |
| </fileset> |
| <fileset dir="${example.dir}"> |
| <include name="**/*.java"/> |
| </fileset> |
| </cs:checkstyle> |
| </target> |
| |
| <target name="checkstyle" depends="checkstyle-internal" |
| description="checks Ivy codebase according to ${checkstyle.src.dir}/checkstyle-config"> |
| <fail if="checkstyle.failed" unless="ignore.checkstyle" |
| message="Checkstyle has errors. See report in ${checkstyle.report.dir}"/> |
| </target> |
| |
| <target name="checkstyle-report" depends="checkstyle-internal"> |
| <property name="checkstyle.basedir" location="${src.dir}"/> |
| <xslt in="${checkstyle.report.dir}/checkstyle.xml" |
| style="${checkstyle.src.dir}/checkstyle-frames.xsl" |
| out="${checkstyle.report.dir}/output.txt"> |
| <param name="basedir" expression="${checkstyle.basedir}"/> |
| <param name="output.dir" expression="${checkstyle.report.dir}"/> |
| </xslt> |
| </target> |
| |
| <target name="init-findbugs" unless="findbugs.home"> |
| <!-- Findbugs: Getting Findbugs requires unlimited strength crypto policy --> |
| <property name="findbugs.version" |
| value="3.0.1" |
| description="Version of Findbugs to use"/> |
| <property name="findbugs.download.name" |
| value="findbugs-${findbugs.version}" |
| description="Name of the download file without suffix. Also the internal root directory of the ZIP."/> |
| <property name="findbugs.download.file" |
| value="${findbugs.download.name}.zip" |
| description="The filename of the ZIP."/> |
| <property name="findbugs.download.url" |
| value="https://downloads.sourceforge.net/project/findbugs/findbugs/${findbugs.version}/findbugs-${findbugs.version}.zip" |
| description="The download adress at a mirror of Sourceforge."/> |
| <property name="findbugs.download.to" |
| value="${build.dir}/.downloads" |
| description="Where to store the download and 'install' Findbugs."/> |
| <available property="findbugs.home" |
| value="${findbugs.download.to}/${findbugs.download.name}" |
| file="${findbugs.download.to}/${findbugs.download.name}/lib/findbugs.jar" |
| description="Check if Findbugs is already installed."/> |
| |
| <!-- Findbugs: Running Findbugs --> |
| <property name="findbugs.reportdir" |
| location="${reports.dir}/findbugs" |
| description="Where to store Findbugs results"/> |
| <property name="findbugs.raw" |
| value="raw.xml" |
| description="Findbugs output xml file"/> |
| <property name="findbugs.xsl" |
| value="fancy.xsl" |
| description="Which XSL to use for generating output: default, fancy, plain, summary"/> |
| <property name="findbugs.jvmargs" |
| value="-Xms128m -Xmx512m" |
| description="JVMArgs for invoking Findbugs"/> |
| |
| <mkdir dir="${findbugs.download.to}"/> |
| <get src="${findbugs.download.url}" dest="${findbugs.download.to}/${findbugs.download.file}" |
| usetimestamp="true" skipexisting="true"/> |
| <unzip src="${findbugs.download.to}/${findbugs.download.file}" dest="${findbugs.download.to}"/> |
| <property name="findbugs.home" location="${findbugs.download.to}/${findbugs.download.name}"/> |
| </target> |
| |
| <target name="findbugs" description="checks Ivy codebase with Findbugs" depends="init-findbugs,compile-core" xmlns:fb="http://findbugs.sourceforge.net/"> |
| <!-- Load the Findbugs AntTasks --> |
| <path id="findbugs.real.classpath"> |
| <fileset dir="${findbugs.home}/lib" includes="*.jar"/> |
| </path> |
| <taskdef uri="http://findbugs.sourceforge.net/" resource="edu/umd/cs/findbugs/anttask/tasks.properties" classpathref="findbugs.real.classpath"/> |
| |
| <!-- Start Findbugs --> |
| <mkdir dir="${findbugs.reportdir}"/> |
| <fb:findbugs home="${findbugs.home}" |
| classpathref="findbugs.real.classpath" |
| output="xml:withMessages" |
| outputFile="${findbugs.reportdir}/${findbugs.raw}" |
| jvmargs="${findbugs.jvmargs}" |
| projectName="${ant.project.name} ${target.ivy.version}"> |
| <class location="${core.classes.build.dir}"/> |
| <sourcePath path="${src.dir}"/> |
| </fb:findbugs> |
| |
| <!-- Generate (human) readable output --> |
| <xslt basedir="${findbugs.reportdir}" includes="${findbugs.raw}" destdir="${findbugs.reportdir}"> |
| <style> |
| <javaresource name="${findbugs.xsl}" classpathref="findbugs.real.classpath"/> |
| </style> |
| </xslt> |
| </target> |
| |
| <target name="docs" depends="test-report,checkstyle-report,findbugs,japicmp,ivy-report,javadoc"/> |
| |
| <!-- ================================================================= |
| IDE SPECIFIC |
| ================================================================= --> |
| <available file="${basedir}/.classpath" property="eclipse.classpath.exists"/> |
| <target name="check-eclipse-classpath-overwrite" if="eclipse.classpath.exists"> |
| <input message=".classpath file already exists.${line.separator}Are you sure you want to overwrite it and loose your original file?" |
| validargs="Y,N,y,n" addproperty="eclipse.classpath.confirm"/> |
| <condition property="eclipse.classpath.abort"> |
| <equals arg1="${eclipse.classpath.confirm}" arg2="N" casesensitive="false"/> |
| </condition> |
| </target> |
| |
| <target name="eclipse-default" depends="resolve,check-eclipse-classpath-overwrite" |
| unless="eclipse.classpath.abort" |
| description="creates a default .classpath for Eclipse using jars resolved by this Ant build"> |
| <copy file="${basedir}/.classpath.default" tofile="${basedir}/.classpath" overwrite="true"/> |
| </target> |
| |
| <target name="eclipse-ivyde" depends="check-eclipse-classpath-overwrite" |
| unless="eclipse.classpath.abort" |
| description="creates a .classpath for Eclipse using Apache IvyDE plugin"> |
| <copy file="${basedir}/.classpath.ivyde" tofile="${basedir}/.classpath" overwrite="true"/> |
| </target> |
| </project> |