| <!-- |
| 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. |
| --> |
| |
| <!-- START SNIPPET: ant-bootstrap |
| |
| By default the bootstrap will use ~/.m2/repository as the integration repository but you can define the integration |
| repository by specifying a property on the command line: |
| |
| ant -Dmaven.repo.local=/my/integration/repository |
| |
| Those familiar with Maven will note this is the same way the local repository can be set from the command-line. |
| This facilitates having a set of builds converge on the same repository for integration purposes. |
| |
| END SNIPPET: ant-bootstrap --> |
| |
| <project default="all" basedir="." xmlns:artifact="urn:maven-artifact-ant"> |
| |
| <property name="distributionDirectory" value="apache-maven"/> |
| <property name="distributionId" value="apache-maven"/> |
| <property name="distributionShortName" value="Maven"/> |
| <property name="distributionName" value="Apache Maven"/> |
| <property name="it.workdir.version" value="3.0.x" /> |
| <property name="maven-compile.jvmargs" value="-Xmx512m -Xms512m"/> |
| <property name="maven-compile.fork" value="true"/> |
| <property name="maven-compile.maxmemory" value="512m"/> |
| |
| <target name="initTaskDefs"> |
| <echo>Building ${distributionName} ...</echo> |
| <xmlproperty file="pom.xml" prefix="xmlPom" /> |
| <path id="maven-ant-tasks.classpath" path="maven-ant-tasks-2.1.1.jar" /> |
| <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" /> |
| </target> |
| |
| <target name="isMavenHomeSet" depends="initTaskDefs"> |
| <property environment="env" /> |
| <condition property="maven.home" value="${env.M2_HOME}"> |
| <isset property="env.M2_HOME" /> |
| </condition> |
| <fail message="You must set the M2_HOME environment variable or specify a maven.home property to this Ant script"> |
| <condition> |
| <or> |
| <not> |
| <isset property="maven.home" /> |
| </not> |
| <equals arg1="${maven.home}" arg2="" trim="true" /> |
| </or> |
| </condition> |
| </fail> |
| <available property="maven.home.exists" file="${maven.home}" /> |
| </target> |
| |
| <target name="prompt-maven-home-exists" depends="isMavenHomeSet" if="maven.home.exists"> |
| <input addproperty="maven.home.exists.continue" validargs="yes,no" defaultvalue="no">WARNING: |
| The specified target directory |
| ${maven.home} |
| already exists. It will be deleted and overwritten by the build. |
| Do you want to continue?</input> |
| <fail message="Build was aborted by user"> |
| <condition> |
| <equals arg1="${maven.home.exists.continue}" arg2="no" trim="true" casesensitive="false" /> |
| </condition> |
| </fail> |
| </target> |
| |
| <target name="init" depends="isMavenHomeSet"> |
| <!-- Initialize properties --> |
| <property name="maven.home.basename.expected" value="${distributionId}-${xmlPom.project.version}" /> |
| <property name="maven.assembly" location="${distributionDirectory}/target/${maven.home.basename.expected}-bin.zip" /> |
| <property name="maven.repo.local" value="${user.home}/.m2/repository" /> |
| <property name="maven.debug" value="-e" /> |
| <property name="maven.test.skip" value="false" /> |
| <property name="skipTests" value="false" /> |
| <property name="surefire.useFile" value="true" /> |
| <property name="maven.test.redirectTestOutputToFile" value="${surefire.useFile}" /> |
| <property name="maven.goal" value="install" /> |
| <echo>maven.home = ${maven.home}</echo> |
| <echo>maven.repo.local = ${maven.repo.local}</echo> |
| <echo>distributionId = ${distributionId}</echo> |
| <echo>distributionName = ${distributionName}</echo> |
| <echo>distributionDirectory = ${distributionDirectory}</echo> |
| </target> |
| |
| <target name="clean-bootstrap" description="cleans up generated bootstrap classes"> |
| <delete dir="bootstrap" /> |
| </target> |
| |
| <target name="pull" depends="init" unless="skip.pull"> |
| <!-- Pull the dependencies that Maven needs to build --> |
| <copy file="pom.xml" tofile="dependencies.xml" /> |
| <replace file="${basedir}/dependencies.xml" token="<!--bootstrap-start-comment-->" value="<!--" /> |
| <replace file="${basedir}/dependencies.xml" token="<!--bootstrap-end-comment-->" value="-->" /> |
| <artifact:pom file="${basedir}/dependencies.xml" id="pom"> |
| <localRepository path="${maven.repo.local}" /> |
| </artifact:pom> |
| <artifact:dependencies pathId="pom.pathid" filesetId="pom.fileset" useScope="compile"> |
| <localRepository path="${maven.repo.local}" /> |
| <pom refid="pom" /> |
| </artifact:dependencies> |
| <delete file="${basedir}/dependencies.xml" /> |
| |
| <!-- Pull the dependencies for Modello --> |
| <artifact:dependencies pathId="modello.pathid" filesetId="modello.fileset"> |
| <localRepository path="${maven.repo.local}" /> |
| <dependency groupId="org.codehaus.modello" artifactId="modello-maven-plugin" version="${pom.properties.modelloVersion}" /> |
| </artifact:dependencies> |
| |
| <!-- Pull the dependencies for the MetadataGenerator CLI --> |
| <artifact:dependencies pathId="pmdg.pathid" filesetId="pmdg.fileset"> |
| <localRepository path="${maven.repo.local}" /> |
| <dependency groupId="org.codehaus.plexus" artifactId="plexus-component-metadata" version="${pom.properties.plexusVersion}" /> |
| </artifact:dependencies> |
| |
| </target> |
| |
| <target name="process-classes" depends="pull" description="generates plexus component metadata."> |
| <mkdir dir="${basedir}/bootstrap/target" /> |
| <mkdir dir="${basedir}/bootstrap/target/classes" /> |
| |
| <path id="pmdg.classpath"> |
| <path refid="maven.classpath" /> |
| <path refid="pmdg.pathid" /> |
| </path> |
| |
| <echo>Using plexus version ${pom.properties.plexusVersion}</echo> |
| <java fork="true" classname="org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli" failonerror="true"> |
| <classpath refid="pmdg.classpath" /> |
| <!-- We need to generate component descriptors from the maven-artifact sources which use javadoc annotations. --> |
| <arg value="--source" /> |
| <arg value="${basedir}/maven-compat/src/main/java" /> |
| <!-- We have separated the artifact handlers and lifecycle mappings into a separate file. --> |
| <arg value="--descriptors" /> |
| <arg value="${basedir}/maven-core/src/main/resources/META-INF/plexus" /> |
| <!-- Search the classes for annotations that we've compiled. --> |
| <arg value="--classes" /> |
| <arg value="${basedir}/bootstrap/target/classes" /> |
| <!-- We'll make one big fat components descriptor. --> |
| <arg value="--output" /> |
| <arg value="${basedir}/bootstrap/target/classes/META-INF/plexus/components.xml" /> |
| </java> |
| </target> |
| |
| <target name="generate-sources" depends="pull" description="generates Java sources from Modello mdo model files"> |
| <mkdir dir="bootstrap/target" /> |
| <mkdir dir="bootstrap/target/generated-sources" /> |
| |
| <macrodef name="modello-single-mode"> |
| <attribute name="file" /> |
| <attribute name="mode" /> |
| <attribute name="version" /> |
| <sequential> |
| <java fork="true" classname="org.codehaus.modello.ModelloCli" failonerror="true"> |
| <classpath refid="modello.pathid" /> |
| <arg file="@{file}" /> |
| <!-- model file --> |
| <arg value="@{mode}" /> |
| <!-- output type --> |
| <arg file="bootstrap/target/generated-sources" /> |
| <!-- output directory --> |
| <arg value="@{version}" /> |
| <!-- model version --> |
| <arg value="false" /> |
| <!-- package with version --> |
| <arg value="true" /> |
| <!-- use Java 5 --> |
| <arg value="UTF-8" /> |
| <!-- encoding --> |
| </java> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="modello"> |
| <attribute name="file" /> |
| <attribute name="version" default="1.0.0" /> |
| <sequential> |
| <echo taskname="modello" message="Generating sources for @{file}" /> |
| <modello-single-mode file="@{file}" version="@{version}" mode="java" /> |
| <modello-single-mode file="@{file}" version="@{version}" mode="xpp3-reader" /> |
| <modello-single-mode file="@{file}" version="@{version}" mode="xpp3-writer" /> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="modello-ex"> |
| <attribute name="file" /> |
| <attribute name="version" default="1.0.0" /> |
| <sequential> |
| <modello file="@{file}" version="@{version}" /> |
| <modello-single-mode file="@{file}" version="@{version}" mode="xpp3-extended-reader" /> |
| </sequential> |
| </macrodef> |
| |
| <modello-ex file="maven-model/src/main/mdo/maven.mdo" version="4.0.0" /> |
| <modello file="maven-plugin-api/src/main/mdo/lifecycle.mdo" /> |
| <modello file="maven-model-builder/src/main/mdo/profiles.mdo" /> |
| <modello file="maven-settings/src/main/mdo/settings.mdo" version="1.1.0" /> |
| <modello file="maven-core/src/main/mdo/toolchains.mdo" version="1.1.0" /> |
| <modello file="maven-repository-metadata/src/main/mdo/metadata.mdo" version="1.1.0" /> |
| <modello file="maven-compat/src/main/mdo/profiles.mdo" /> |
| <modello file="maven-compat/src/main/mdo/paramdoc.mdo" /> |
| <modello file="maven-embedder/src/main/mdo/core-extensions.mdo" /> |
| </target> |
| |
| <target name="compile-boot" depends="generate-sources" description="compiles the bootstrap sources"> |
| <path id="sources"> |
| <dirset dir="."> |
| <include name="bootstrap/target/generated-sources" /> |
| <include name="*/src/main/java" /> |
| </dirset> |
| </path> |
| |
| <mkdir dir="bootstrap/target/classes" /> |
| <javac destdir="bootstrap/target/classes" encoding="UTF-8" source="1.6" target="1.6" debug="true" includeAntRuntime="false"> |
| <src refid="sources" /> |
| <classpath refid="pom.pathid" /> |
| </javac> |
| |
| <copy todir="bootstrap/target/classes" encoding="ISO-8859-1"> |
| <fileset dir="maven-core/src/main/resources"> |
| <include name="**/build.properties" /> |
| </fileset> |
| <filterset begintoken="${" endtoken="}"> |
| <filter token="project.version" value="${xmlPom.project.version}"/> |
| </filterset> |
| </copy> |
| <echo file="bootstrap/target/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties" encoding="ISO-8859-1"> |
| version = ${xmlPom.project.version} |
| </echo> |
| |
| <path id="maven.classpath"> |
| <pathelement location="bootstrap/target/classes" /> |
| <dirset dir="."> |
| <include name="*/src/main/resources" /> |
| </dirset> |
| <path refid="pom.pathid" /> |
| </path> |
| </target> |
| |
| <target name="maven-compile" depends="compile-boot,process-classes" description="compiles Maven using the bootstrap Maven, skipping automated tests"> |
| <java fork="${maven-compile.fork}" classname="org.apache.maven.cli.MavenCli" failonerror="true" timeout="600000" maxmemory="${maven-compile.maxmemory}"> |
| <!--jvmarg line="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/--> |
| <!--jvmarg value="${maven-compile.jvmargs}"/--> |
| <classpath refid="maven.classpath" /> |
| <arg value="${maven.debug}" /> |
| <arg value="-B" /> |
| <arg value="-V" /> |
| <arg value="clean" /> |
| <arg value="${maven.goal}" /> |
| <arg value="-Dmaven.test.skip=${maven.test.skip}" /> |
| <arg value="-DskipTests=${skipTests}" /> |
| <arg value="-Dmaven.repo.local=${maven.repo.local}" /> |
| <arg value="-Dsurefire.useFile=${surefire.useFile}" /> |
| <arg value="-Dmaven.test.redirectTestOutputToFile=${maven.test.redirectTestOutputToFile}" /> |
| <arg value="-DdistributionId=${distributionId}" /> |
| <arg value="-DdistributionShortName=${distributionShortName}" /> |
| <arg value="-DdistributionName=${distributionName}" /> |
| <jvmarg value="-Dmaven.multiModuleProjectDirectory=${basedir}" /> |
| </java> |
| </target> |
| |
| <target name="maven-assembly" depends="maven-compile" description="generates the Maven installation assembly using the bootstrap Maven"> |
| <echo> |
| The new Maven distribution was created as part of the MAVEN-COMPILE step, above. |
| This goal just validates the presence of that distribution. |
| </echo> |
| <condition property="build.failed"> |
| <not> |
| <available file="${maven.assembly}" /> |
| </not> |
| </condition> |
| <fail if="build.failed" message="Assembly task seemed to succeed, but couldn't find assembly file: ${maven.assembly}" /> |
| </target> |
| |
| <target name="extract-assembly" depends="init,prompt-maven-home-exists,maven-assembly" description="extracts the maven assembly into maven.home"> |
| <echo>Extracting assembly to ${maven.home} ...</echo> |
| <!-- If we are starting from scratch make sure the directory is created --> |
| <delete dir="${maven.home}" /> |
| <mkdir dir="${maven.home}" /> |
| <unzip src="${maven.assembly}" dest="${maven.home}"> |
| <mapper type="regexp" from="^[^\\/]+[\\/](.*)$$" to="\1" /> |
| </unzip> |
| <chmod perm="+x"> |
| <fileset dir="${maven.home}/bin"> |
| <include name="mvn" /> |
| <include name="mvnDebug" /> |
| <include name="mvnyjp" /> |
| </fileset> |
| </chmod> |
| </target> |
| |
| <target name="all" depends="clean-bootstrap,init,extract-assembly" /> |
| |
| </project> |