blob: 9140f0c77accbd1a22dcd6171077aa52f8451e15 [file] [log] [blame]
<project name="maven-ant-tasks" default="test-all" xmlns:artifact="urn:maven-artifact-ant" xmlns:test="urn:test-tasks">
<!--
<project name="foo" default="foo" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
-->
<!--
You either need to run the the 'initTaskDefs' task below and
define the artifact namespace like above (choose anything you
like except strings that start with 'antlib:'),
and be sure to supply the path to the maven-artifact-ant jars
OR
just define the artifact namespace as follows:
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
and be sure to add the maven-artifact-ant jars to the ant
classpath (either by setting the CLASSPATH environment variable
before calling ant, or place the jars in the $ANT_HOME/lib directory).
-->
<target name="initClassloader">
<path id="testclasspath" path="target/test-classes" />
<typedef resource="test-tasks.xml" uri="urn:test-tasks" classpathref="testclasspath"/>
<test:classloader set="classloader"/>
</target>
<target name="checkClassloader">
<test:classloader check="classloader"/>
</target>
<target name="initTaskDefs" depends="initClassloader">
<xmlproperty file="pom.xml" prefix="pom.xml" />
<path id="maven-ant-tasks.classpath" path="target/maven-ant-tasks-${pom.xml.project.version}.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
classpathref="maven-ant-tasks.classpath"/>
<artifact:localRepository id="local.repository" path="${basedir}/target/local-repo" layout="default"/>
<property name="deploy.repository.url" value="${basedir}/target/deployment-repo" />
<artifact:remoteRepository id="deploy.repository" url="file://localhost/${deploy.repository.url}" layout="default"/>
<artifact:pom file="pom.xml" id="maven.project"/>
<test:classloader check="classloader"/>
</target>
<target name="installSshProvider" depends="initTaskDefs">
<artifact:install-provider artifactId="wagon-ssh" version="1.0-beta-2"/>
</target>
<target name="test-all-deps" description="All dependencies tests"
depends="test-pom,test-pom-with-parent,test-no-deps,test-pom-deps,test-deps-two-repos,test-deps,test-legacy-pom,test-deps-mirror,test-deps-order,test-deps-sources,test-deps-sources-empty,test-deps-profile">
<echo>test-bad-dep and test-invalid-pom-ref must be run manually, since they are intended to fail</echo>
</target>
<target name="test-all-pubs" description="All publication tests (install/deploy)"
depends="test-deploy-spaces,test-deploy,test-no-dist-mgmt,test-install-attached,test-deploy-attached"/>
<target name="test-all" description="All tests"
depends="test-all-deps,test-all-pubs,test-install-provider,checkClassloader">
<echo>test-scm not run, since it fails...</echo>
</target>
<target name="test-no-deps" depends="initTaskDefs">
<artifact:dependencies filesetId="runtime.fileset" pathId="empty.dependency.classpath">
</artifact:dependencies>
<copy todir="target/test-no-deps" verbose="true">
<fileset refid="runtime.fileset"/>
</copy>
<property name="empty.property" refid="empty.dependency.classpath"/>
</target>
<target name="test-empty-settings" depends="initTaskDefs">
<artifact:dependencies filesetId="runtime.fileset" settingsFile="${basedir}/src/test/settings-empty.xml">
</artifact:dependencies>
</target>
<target name="test-bad-dep" depends="initTaskDefs">
<artifact:dependencies pathId="dependency.classpath" filesetId="dependency.fileset">
<dependency groupId="foo" artifactId="foo" version="1.0-alpha-2"/>
</artifact:dependencies>
</target>
<target name="test-pom" depends="initTaskDefs">
<artifact:pom file="pom.xml" id="my.maven.project"/>
<echo>Artifact ID = ${my.maven.project.artifactId}</echo>
<echo>Parent Artifact ID = ${my.maven.project.parent.artifactId}</echo>
<fail message="failed to get pom info ${my.maven.project.artifactId}">
<condition>
<not><equals arg1="${my.maven.project.artifactId}" arg2="${pom.xml.project.artifactId}"/></not>
</condition>
</fail>
<echo>Maven Core Version = ${my.maven.project.properties.mavenVersion}</echo>
<fail message="failed to get pom properties ${my.maven.project.properties.mavenVersion}">
<condition>
<not><equals arg1="${my.maven.project.properties.mavenVersion}" arg2="${pom.xml.project.properties.mavenVersion}"/></not>
</condition>
</fail>
</target>
<target name="test-legacy-pom" depends="initTaskDefs">
<artifact:dependencies>
<dependency groupId="geronimo-spec" artifactId="geronimo-spec-javamail" version="1.3.1-rc5" />
<localRepository path="${basedir}/target/local-repo-legacy" />
<remoteRepository url="http://repo1.maven.org/maven" layout="legacy" id="central" />
</artifact:dependencies>
</target>
<target name="test-deps" depends="initTaskDefs">
<artifact:dependencies pathId="dependency.classpath" filesetId="dependency.fileset"
verbose="true" versionsId="dependency.versions">
<dependency groupId="org.apache.maven.wagon" artifactId="wagon-provider-test" version="1.0-alpha-4">
<exclusion groupId="junit" artifactId="junit"/>
</dependency>
<dependency groupId="org.apache.maven" artifactId="maven-core-it-support-old-location" version="1.1"/>
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueTrue" version="2.0.7-SNAPSHOT"/>
<localRepository refid="local.repository"/>
<remoteRepository url="http://repo1.maven.org/maven2" id="central" />
<remoteRepository url="file://${user.dir}/src/test/repo" id="test.repo">
<snapshots enabled="true"/>
<releases enabled="false"/>
</remoteRepository>
</artifact:dependencies>
<copy todir="target/files/binaries">
<fileset refid="dependency.fileset"/>
</copy>
<!-- excluded dependency junit:junit -->
<check.file.not.exists file="target/files/binaries/junit/junit" type="dir"/>
<!-- SNAPSHOT dependency it.ant-tasks:snapshotUniqueFalse:2.0.7-SNAPSHOT -->
<check.file.exists file="target/files/binaries/it/ant-tasks/snapshotUniqueFalse" type="dir"/>
<!-- MANTTASKS-18: SNAPSHOT dependency it.ant-tasks:snapshotUniqueTrue:2.0.7-SNAPSHOT -->
<check.file.exists file="target/files/binaries/it/ant-tasks/snapshotUniqueTrue" type="dir"/>
<!-- MANTTASKS-84 -->
<copy todir="target/files/versionMapperFlatten">
<fileset refid="dependency.fileset"/>
<mapper classpathref="maven-ant-tasks.classpath" classname="org.apache.maven.artifact.ant.VersionMapper"
from="${dependency.versions}" to="flatten" />
</copy>
<!-- VersionMapper to="flatten" on SNAPSHOT -->
<check.file.not.exists file="target/files/versionMapperFlatten/it" type="dir"/>
<!-- MANTTASKS-33: property it.ant-tasks:snapshotUniqueFalse:jar should point to an existing file -->
<check.file.exists file="${it.ant-tasks:snapshotUniqueTrue:jar}"/>
</target>
<target name="test-pom-deps" depends="initTaskDefs">
<artifact:dependencies filesetId="maven-ant-tasks.dependency.fileset">
<pom refid="maven.project"/>
</artifact:dependencies>
<copy todir="target/maven-ant-tasks-dependencies">
<fileset refid="maven-ant-tasks.dependency.fileset"/>
</copy>
<artifact:dependencies filesetId="maven-ant-tasks.compile.dependency.fileset" versionsId="maven-ant-tasks.compile.dependency.versions" useScope="compile">
<pom refid="maven.project"/>
</artifact:dependencies>
<echo>dependencies versions: ${maven-ant-tasks.compile.dependency.versions}</echo>
<copy todir="target/maven-ant-tasks-compile-dependencies/fileset">
<fileset refid="maven-ant-tasks.compile.dependency.fileset"/>
</copy>
<copy todir="target/maven-ant-tasks-compile-dependencies/versionMapper">
<fileset refid="maven-ant-tasks.compile.dependency.fileset"/>
<mapper classpathref="maven-ant-tasks.classpath" classname="org.apache.maven.artifact.ant.VersionMapper"
from="${maven-ant-tasks.compile.dependency.versions}" />
</copy>
<copy todir="target/maven-ant-tasks-compile-dependencies/versionMapperFlatten">
<fileset refid="maven-ant-tasks.compile.dependency.fileset"/>
<mapper classpathref="maven-ant-tasks.classpath" classname="org.apache.maven.artifact.ant.VersionMapper"
from="${maven-ant-tasks.compile.dependency.versions}" to="flatten" />
</copy>
<copy todir="target/maven-ant-tasks-compile-dependencies/WEB-INF/lib">
<fileset refid="maven-ant-tasks.compile.dependency.fileset"/>
<mapper type="flatten"/>
</copy>
</target>
<target name="test-deps-mirror" depends="initTaskDefs">
<delete dir="${basedir}/target/tmp"/>
<!-- the remoteRepository specified doesn't really exist, but settings declares an existing mirror -->
<artifact:dependencies settingsFile="${basedir}/src/test/settings-mirror.xml">
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
<localRepository path="${basedir}/target/tmp"/>
<remoteRepository url="file://${basedir}/target/fake/repository" id="fake-repository" />
</artifact:dependencies>
<delete dir="${basedir}/target/tmp"/>
<!-- the remoteRepository specified doesn't really exist, but settings declares an existing mirror for * -->
<artifact:dependencies settingsFile="${basedir}/src/test/settings-mirror-wildcard.xml">
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
<localRepository path="${basedir}/target/tmp"/>
<remoteRepository url="file://${basedir}/target/fake/repository" id="any" />
</artifact:dependencies>
</target>
<target name="test-deps-two-repos" depends="initTaskDefs">
<delete dir="target/tmp"/>
<!-- MANTTASKS-78 -->
<artifact:dependencies verbose="true">
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
<localRepository path="target/tmp"/>
<remoteRepository url="file://${user.dir}/src/test/repo"/> <!-- intentionnally left without id -->
<remoteRepository url="file://${user.dir}/target/tmp/fake"/><!-- intentionnally left without id -->
</artifact:dependencies>
</target>
<target name="test-deps-order" depends="initTaskDefs">
<artifact:dependencies pathId="order.path">
<dependency groupId="junit" artifactId="junit" version="3.8.1"/>
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
<localRepository refid="local.repository"/>
<remoteRepository url="http://repo1.maven.org/maven2" id="central" />
<remoteRepository url="file://${user.dir}/src/test/repo" id="test.repo">
<snapshots enabled="true"/>
<releases enabled="false"/>
</remoteRepository>
</artifact:dependencies>
<pathconvert property="order.property" targetos="unix" refid="order.path">
<mapper type="flatten"/>
</pathconvert>
<condition property="order.ok">
<equals arg1="${order.property}" arg2="junit-3.8.1.jar:snapshotUniqueFalse-2.0.7-SNAPSHOT.jar"/>
</condition>
<fail unless="order.ok">dependencies junit then it.ant-tasks should be preserved in path: ${order.property}</fail>
<artifact:dependencies pathId="reverse.order.path">
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
<dependency groupId="junit" artifactId="junit" version="3.8.1"/>
<localRepository refid="local.repository"/>
<remoteRepository url="http://repo1.maven.org/maven2" id="central" />
<remoteRepository url="file://${user.dir}/src/test/repo" id="test.repo">
<snapshots enabled="true"/>
<releases enabled="false"/>
</remoteRepository>
</artifact:dependencies>
<pathconvert property="reverse.order.property" targetos="unix" refid="reverse.order.path">
<mapper type="flatten"/>
</pathconvert>
<condition property="reverse.order.ok">
<equals arg1="${reverse.order.property}" arg2="snapshotUniqueFalse-2.0.7-SNAPSHOT.jar:junit-3.8.1.jar"/>
</condition>
<fail unless="reverse.order.ok">dependencies junit then it.ant-tasks should be preserved in path: ${reverse.order.property}</fail>
<artifact:pom file="src/test/pom-order.xml" id="order.project"/>
<artifact:dependencies pathId="pom.order.path" verbose="true">
<pom refid="order.project"/>
</artifact:dependencies>
<pathconvert property="pom.order.property" targetos="unix" refid="pom.order.path">
<mapper type="flatten"/>
</pathconvert>
<condition property="pom.order.ok">
<equals arg1="${pom.order.property}" arg2="commons-io-1.3.2.jar:commons-lang-2.3.jar:commons-logging-1.1.1.jar:commons-collections-3.2.jar"/>
</condition>
<fail unless="pom.order.ok">order of dependencies defined in pom should be preserved in path: ${pom.order.property}</fail>
</target>
<target name="test-deps-sources" depends="initTaskDefs">
<artifact:dependencies filesetId="jar.fileset" sourcesFilesetId="sources.fileset" javadocFilesetId="javadoc.fileset">
<dependency groupId="it.ant-tasks" artifactId="release" version="2.0.7"/>
<localRepository refid="local.repository"/>
<remoteRepository url="file://${user.dir}/src/test/repo" id="test.repo">
<snapshots enabled="false"/>
<releases enabled="true"/>
</remoteRepository>
</artifact:dependencies>
<delete dir="${basedir}/target/files/sources"/>
<copy todir="${basedir}/target/files/sources">
<fileset refid="sources.fileset"/>
<mapper type="flatten"/>
</copy>
<!-- release sources -->
<check.file.exists file="${basedir}/target/files/sources/release-2.0.7-sources.jar"/>
<!-- property it.ant-tasks:release:java-source:sources should point to an existing file in local repo -->
<check.file.exists file="${it.ant-tasks:release:java-source:sources}"/>
<delete dir="${basedir}/target/files/javadoc"/>
<copy todir="${basedir}/target/files/javadoc">
<fileset refid="javadoc.fileset"/>
<mapper type="flatten"/>
</copy>
<!-- release javadoc -->
<check.file.exists file="${basedir}/target/files/javadoc/release-2.0.7-javadoc.jar"/>
<!-- property it.ant-tasks:release:java-source:javadoc should point to an existing file in local repo -->
<check.file.exists file="${it.ant-tasks:release:java-source:javadoc}"/>
</target>
<target name="test-deps-sources-empty" depends="initTaskDefs">
<artifact:dependencies sourcesFilesetId="sources.fileset" javadocFilesetId="javadoc.fileset">
<dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
<localRepository refid="local.repository"/>
<remoteRepository url="file://${user.dir}/src/test/repo" id="test.repo">
<snapshots enabled="true"/>
<releases enabled="false"/>
</remoteRepository>
</artifact:dependencies>
<delete dir="${basedir}/target/files/empty"/>
<copy todir="${basedir}/target/files/empty">
<fileset refid="sources.fileset"/>
<mapper type="merge" to="sources.bin"/>
</copy>
<copy todir="${basedir}/target/files/empty">
<fileset refid="javadoc.fileset"/>
<mapper type="merge" to="javadoc.bin"/>
</copy>
<!-- no dependencies sources -->
<check.file.not.exists file="${basedir}/target/files/empty/sources.bin"/>
<!-- no dependencies javadoc -->
<check.file.not.exists file="${basedir}/target/files/empty/javadoc.bin"/>
</target>
<target name="test-deps-profile" depends="initTaskDefs">
<delete dir="${basedir}/target/tmp"/>
<artifact:dependencies settingsFile="./src/test/settings-profile-default.xml">
<dependency groupId="it.ant-tasks" artifactId="release" version="2.0.7"/>
<localRepository path="${basedir}/target/tmp"/>
</artifact:dependencies>
<delete dir="${basedir}/target/tmp"/>
<artifact:dependencies settingsFile="./src/test/settings-profile-file.xml">
<dependency groupId="it.ant-tasks" artifactId="release" version="2.0.7"/>
<localRepository path="${basedir}/target/tmp"/>
</artifact:dependencies>
</target>
<target name="test-deploy-spaces" depends="initTaskDefs,installSshProvider">
<echo file="target/test file.txt">dummy</echo>
<artifact:deploy file="target/test file.txt">
<!-- intentionnally left without id to check default id: see MANTTASKS-103 -->
<remoteRepository url="scp://localhost/tmp/deployment-repo"/>
<localrepository refid="local.repository"/>
<pom refid="maven.project"/>
</artifact:deploy>
<!-- MANTTASKS-103: maven-metadata-scp: should not exist since scp: is an illegal remoteRepository id -->
<check.file.not.exists file="${basedir}/target/local-repo/org/apache/maven/maven-ant-tasks/maven-metadata-scp://localhost"/>
</target>
<target name="test-deploy" depends="initTaskDefs,installSshProvider">
<property name="outJar" value="${maven.project.build.directory}/${maven.project.build.finalName}.jar"/>
<property name="targetDir" value="${deploy.repository.url}/org/apache/maven/maven-ant-tasks/${pom.xml.project.version}"/>
<delete dir="${deploy.repository.url}"/>
<artifact:install file="${outJar}">
<pom refid="maven.project"/>
</artifact:install>
<echo>Note: only works on snapshots!</echo>
<artifact:deploy file="${outJar}">
<remoteSnapshotRepository refid="deploy.repository"/>
<pom refid="maven.project"/>
</artifact:deploy>
<!-- deployment in ${deploy.repository.url} should have created a directory -->
<check.file.exists file="${targetDir}" type="dir"/>
<!-- uniqueVersion="true" by default: file -SNAPSHOT.jar should not exist -->
<check.file.not.exists file="${targetDir}/maven-ant-tasks-${pom.xml.project.version}.jar"/>
<artifact:deploy file="${outJar}" uniqueVersion="false">
<remoteSnapshotRepository refid="deploy.repository"/>
<pom refid="maven.project"/>
</artifact:deploy>
<!-- when uniqueVersion="false", file -SNAPSHOT.jar should be created -->
<check.file.exists file="${targetDir}/maven-ant-tasks-${pom.xml.project.version}.jar"/>
<artifact:deploy file="${outJar}">
<remoteRepository url="scp://localhost/tmp/deployment-repo" id="scp.localhost.repo">
<authentication username="${user.name}" privateKey="${user.home}/.ssh/id_dsa"/>
</remoteRepository>
<pom refid="maven.project"/>
</artifact:deploy>
</target>
<target name="test-scm" depends="initTaskDefs">
<echo>Testing SCM Wagon</echo>
<mkdir dir="target"/>
<pathconvert targetos="unix" property="repo.path.unix">
<map from="c:" to=""/>
<path>
<pathelement location="${basedir}/target/deployment-repo-scm"/>
</path>
</pathconvert>
<property name="scm.url" value="file://${repo.path.unix}"/>
<delete dir="${repo.path.unix}"/>
<exec executable="svnadmin" failonerror="true">
<arg line="create ${repo.path.unix}"/>
</exec>
<artifact:localRepository id="local.repository" path="${basedir}/target/local-repo" layout="default"/>
<artifact:remoteRepository id="deploy.repository" url="scm:svn:${scm.url}" layout="default"/>
<artifact:dependencies pathId="dependency.classpath">
<dependency groupId="org.apache.maven.wagon" artifactId="wagon-provider-test" version="1.0-alpha-4"/>
<dependency groupId="org.apache.maven.archiva" artifactId="archiva-configuration" version="1.0-SNAPSHOT"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
<exec executable="svn" dir="${basedir}/target/local-repo" failonerror="true">
<arg line="import -m 'import' ${scm.url}"/>
</exec>
<delete dir="${basedir}/target/local-repo-scm"/>
<!-- Could the SCM provider initialise this? -->
<exec executable="svn" dir="${basedir}/target" failonerror="true">
<arg line="co ${scm.url} -N local-repo-scm"/>
</exec>
<artifact:localRepository id="local.repository.scm" path="${basedir}/target/local-repo-scm" layout="default"/>
<artifact:dependencies pathId="dependency.classpath.scm">
<dependency groupId="org.apache.maven.wagon" artifactId="wagon-provider-test" version="1.0-alpha-4"/>
<dependency groupId="org.apache.maven.archiva" artifactId="archiva-configuration" version="1.0-SNAPSHOT"/>
<localRepository refid="local.repository.scm"/>
<remoteRepository refid="deploy.repository"/>
</artifact:dependencies>
<property name="outJar" value="${maven.project.build.directory}/${maven.project.build.finalName}.jar"/>
<artifact:deploy file="${outJar}">
<localRepository refid="local.repository.scm"/>
<remoteRepository refid="deploy.repository"/>
<pom refid="maven.project"/>
</artifact:deploy>
</target>
<target name="test-invalid-pom-ref" depends="initTaskDefs">
<artifact:dependencies>
<pom refid="invalid-ref" />
</artifact:dependencies>
</target>
<target name="test-no-dist-mgmt" depends="initTaskDefs">
<artifact:deploy file="sample-build-test.pom">
<pom file="sample-build-test.pom" />
<remoteRepository refid="deploy.repository" />
</artifact:deploy>
</target>
<target name="test-deploy-attached" depends="initTaskDefs">
<echo message="test" file="${basedir}/target/sample-build-test.pom.asc"/>
<artifact:deploy file="sample-build-test.pom">
<pom file="sample-build-test.pom" />
<remoteRepository refid="deploy.repository" />
<attach file="${basedir}/target/sample-build-test.pom.asc" type="pom.asc"/>
</artifact:deploy>
</target>
<target name="test-install-attached" depends="initTaskDefs">
<echo message="test" file="${basedir}/target/sample-build-test.pom.asc"/>
<artifact:install file="sample-build-test.pom">
<pom file="sample-build-test.pom" />
<localRepository refid="local.repository"/>
<attach file="${basedir}/target/sample-build-test.pom.asc" type="pom.asc"/>
</artifact:install>
</target>
<target name="test-install-provider" depends="initTaskDefs">
<artifact:install-provider groupId="it.ant-tasks" artifactId="wagon-foo" version="1.0-beta-2">
<localRepository refid="local.repository"/>
<remoteRepository url="file://${user.dir}/src/test/repo" id="test.repo"/>
</artifact:install-provider>
</target>
<target name="test-pom-with-parent" depends="initTaskDefs">
<artifact:pom file="${user.dir}/src/test/pom-with-parent.xml" id="my.maven.project">
<localRepository refid="local.repository"/>
<remoteRepository url="file://${user.dir}/src/test/repo" id="test.repo"/>
</artifact:pom>
<echo>Artifact ID = ${my.maven.project.artifactId}</echo>
<echo>Parent Artifact ID = ${my.maven.project.parent.artifactId}</echo>
<!-- MANTTASKS-107 repository defined in pom must be used to download parent pom -->
<delete dir="${basedir}/target/tmp"/>
<artifact:pom file="${user.dir}/src/test/pom-with-parent2.xml" id="my.maven.project2">
<localRepository path="${basedir}/target/tmp"/>
</artifact:pom>
</target>
<macrodef name="check.file.exists">
<attribute name="file"/>
<attribute name="type" default="file"/>
<sequential>
<echo>Checking for existence of @{type}: @{file}</echo>
<fail message="Unable to find a required @{type}: @{file}">
<condition>
<not>
<available file="@{file}" type="@{type}"/>
</not>
</condition>
</fail>
</sequential>
</macrodef>
<macrodef name="check.file.not.exists">
<attribute name="file"/>
<attribute name="type" default="file"/>
<sequential>
<echo>Checking for non-existence of @{type}: @{file}</echo>
<fail message="Found a @{type} that was not supposed to exist: @{file}">
<condition>
<available file="@{file}" type="@{type}"/>
</condition>
</fail>
</sequential>
</macrodef>
</project>