| <!-- |
| 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="ivy" default="coverage-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" /> |
| |
| <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="init-ivy-home, 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="init-ivy-home, 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"> |
| <pathelement location="${coverage.classes.dir}" /> |
| <fileset dir="${lib.dir}"> |
| <include name="*.jar" /> |
| <exclude name="ant.jar" /> |
| <exclude name="ant-launcher.jar" /> |
| <exclude name="ant-nodeps.jar"/> |
| <exclude name="ant-trax.jar"/> |
| </fileset> |
| <pathelement location="${core.classes.build.dir}" /> |
| <pathelement location="${ant.classes.build.dir}" /> |
| <pathelement location="${optional.classes.build.dir}" /> |
| <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}" /> |
| <mkdir dir="${ivy.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="${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, clean-lib, clean-examples" /> |
| |
| <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, resolve"> |
| <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="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-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="emma" depends="jar" unless="skip.test"> |
| <ivy:cachepath organisation="emma" module="emma" revision="2.0.5312" |
| inline="true" conf="default" pathid="emma.classpath" |
| log="download-only" /> |
| <ivy:cachepath organisation="emma" module="emma_ant" revision="2.0.5312" |
| inline="true" conf="default" pathid="emma.ant.classpath" transitive="false" |
| log="download-only" /> |
| <taskdef resource="emma_ant.properties"> |
| <classpath refid="emma.classpath" /> |
| <classpath refid="emma.ant.classpath" /> |
| </taskdef> |
| <property name="emma.enabled" value="true" /> |
| <property name="coverage.dir" value="${build.dir}/coverage" /> |
| <property name="coverage.classes.dir" value="${coverage.dir}/classes" /> |
| <mkdir dir="${coverage.dir}" /> |
| <mkdir dir="${coverage.classes.dir}" /> |
| <emma enabled="${emma.enabled}"> |
| <instr mode="copy" |
| destdir="${coverage.dir}/classes" |
| metadatafile="${coverage.dir}/metadata.emma"> |
| <instrpath> |
| <pathelement location="${core.classes.build.dir}" /> |
| <pathelement location="${ant.classes.build.dir}" /> |
| <pathelement location="${optional.classes.build.dir}" /> |
| </instrpath> |
| </instr> |
| </emma> |
| <delete file="${coverage.dir}/coverage.emma" /> |
| <!-- add emma path to test path, because emma jars need to be available when running |
| instrumented classes --> |
| <ivy:addpath topath="test.classpath" first="true"> |
| <pathelement location="${coverage.dir}/classes" /> |
| <path refid="emma.classpath" /> |
| </ivy:addpath> |
| </target> |
| |
| <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="ISO-8859-1" |
| includeantruntime="no" /> |
| <copy todir="${test.build.dir}"> |
| <fileset dir="${test.dir}"> |
| <exclude name="**/*.java" /> |
| </fileset> |
| </copy> |
| </target> |
| |
| <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="test-internal" depends="build-test, init-tests, prepare-test-jar-repositories" unless="skip.test"> |
| <mkdir dir="${test.xml.dir}" /> |
| |
| <junit |
| haltonfailure="off" |
| haltonerror="off" |
| errorproperty="test.failed" |
| failureproperty="test.failed" |
| showoutput="no" |
| printsummary="yes" |
| includeantruntime="yes" |
| dir="${basedir}" |
| fork="true"> |
| <classpath> |
| <path refid="test.classpath" /> |
| <pathelement path="${ant.home}/lib/ant-nodeps.jar"/> |
| <pathelement path="${ant.home}/lib/ant-trax.jar"/> |
| </classpath> |
| |
| <!-- pass the proxy properties to the forked junit process to use correct proxy --> |
| <syspropertyset> |
| <propertyref prefix="http" /> |
| </syspropertyset> |
| <jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage.emma" /> |
| <jvmarg value="-Demma.coverage.out.merge=true" /> |
| |
| <!-- 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> |
| </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"> |
| <junitreport todir="${test.xml.dir}"> |
| <fileset dir="${test.xml.dir}"> |
| <include name="TEST-*.xml" /> |
| </fileset> |
| <report format="frames" todir="${test.report.dir}" /> |
| </junitreport> |
| <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="emma, test-report" unless="skip.test" |
| description="run tests with instrumentation and generate coverage report"> |
| <mkdir dir="${coverage.report.dir}" /> |
| <emma> |
| <report sourcepath="${src.dir}"> |
| <fileset dir="${coverage.dir}"> |
| <include name="*.emma" /> |
| </fileset> |
| |
| <txt outfile="${coverage.report.dir}/coverage.txt" /> |
| <html outfile="${coverage.report.dir}/coverage.html" /> |
| </report> |
| </emma> |
| </target> |
| |
| <target name="ivy-report" depends="resolve"> |
| <ivy:report todir="${ivy.report.dir}"/> |
| </target> |
| |
| <target name="javadoc" unless="skip.javadoc"> |
| <javadoc destdir="${javadoc.build.dir}" useexternalfile="true"> |
| <fileset dir="${src.dir}" includes="**/*.java" /> |
| </javadoc> |
| </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="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}" /> |
| <apply executable="svn"> |
| <fileset refid="eol.native.fileset" /> |
| <arg value="propset" /> |
| <arg value="svn:eol-style" /> |
| <arg value='"native"' /> |
| </apply> |
| </target> |
| |
| <!-- Checks Ivy codebase according to ${checkstyle.src.dir}/checkstyle-config --> |
| <target name="checkstyle-internal" depends="jar"> |
| <ivy:cachepath organisation="checkstyle" module="checkstyle" revision="4.3" |
| inline="true" conf="default" pathid="checkstyle.classpath" transitive="true" |
| log="download-only"/> |
| <taskdef resource="checkstyletask.properties" classpathref="checkstyle.classpath" /> |
| |
| <mkdir dir="${checkstyle.report.dir}" /> |
| <checkstyle 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> |
| </checkstyle> |
| </target> |
| |
| <target name="checkstyle" depends="checkstyle-internal" description="checks Ivy codebase according to ${checkstyle.src.dir}/checkstyle-config"> |
| <fail if="checkstyle.failed" |
| 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}" /> |
| </xslt> |
| </target> |
| |
| <target name="init-findbugs" unless="findbugs.home"> |
| <!-- Findbugs: Getting Findbugs --> |
| <property name="findbugs.download.name" |
| value="findbugs-1.3.5" |
| 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="http://garr.dl.sourceforge.net/sourceforge/findbugs/${findbugs.download.file}" |
| 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}"/> |
| <unzip src="${findbugs.download.to}/${findbugs.download.file}" dest="${findbugs.download.to}"/> |
| <property name="findbugs.home" location="${findbugs.download.to}/${findbugs.download.name}"/> |
| <mkdir dir="${findbugs.home}/plugin"/> |
| </target> |
| |
| <target name="findbugs" description="checks Ivy codebase with Findbugs" depends="init-findbugs,compile-core" xmlns:fb="http://findbugs.sourceforge.net/"> |
| <path id="findbugs.real.classpath"> |
| <fileset dir="${findbugs.home}/lib" includes="*.jar"/> |
| </path> |
| |
| <!-- Load the Findbugs AntTasks --> |
| <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="${Name} ${project.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> |
| |
| <!-- ================================================================= |
| 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 version"> |
| <copy file="${basedir}/.classpath.ivyde" tofile="${basedir}/.classpath" overwrite="true" /> |
| </target> |
| </project> |