Author: jvanzyl Date: Sun Jan 11 17:47:58 2009 New Revision: 733575 URL: http://svn.apache.org/viewvc?rev=733575&view=rev Log: o start flipping over the bootstrap to mercury
Added: maven/components/trunk/build-mercury.xml (with props) Added: maven/components/trunk/build-mercury.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/build-mercury.xml?rev=733575&view=auto ============================================================================== --- maven/components/trunk/build-mercury.xml (added) +++ maven/components/trunk/build-mercury.xml Sun Jan 11 17:47:58 2009 @@ -0,0 +1,230 @@ +<!-- +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:mercury-ant-tasks"> + + <property name="it.workdir.version" value="3.0.x"/> + + <target name="initTaskDefs"> + <xmlproperty file="pom.xml" prefix="pom.xml" /> + <path id="maven-ant-tasks.classpath" path="mercury-ant-tasks-1.0-alpha-2.jar"/> + <typedef resource="org/apache/maven/mercury/ant/antlib.xml" uri="urn:mercury-ant-tasks" classpathref="mercury-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> + </target> + + <target name="init" depends="isMavenHomeSet"> + <xmlproperty prefix="pom" file="pom.xml"/> + <basename file="${maven.home}" property="maven.home.basename"/> + <dirname file="${maven.home}" property="maven.home.dirname"/> + <!-- Initialize properties --> + <property name="maven.home.basename.expected" value="apache-maven-${pom.project.version}"/> + <property name="maven.assembly" location="maven-distribution/target/${maven.home.basename.expected}-bin.zip"/> + <property name="maven.repo.local" value="${user.home}/.m2/repository"/> + <property name="surefire.useFile" value="true"/> + <echo>maven.home = ${maven.home}</echo> + </target> + + <target name="clean-bootstrap" description="cleans up generated bootstrap classes"> + <delete dir="bootstrap"/> + </target> + + <target name="pull" depends="init" unless="skip.pull"> + <property name="verbose" value="false"/> + <!-- Pull the dependencies that Maven needs to build --> + <copy file="pom.xml" tofile="dependencies.xml"/> + <replace file="${basedir}/dependencies.xml" token="<!--start-->" value="<!--"/> + <replace file="${basedir}/dependencies.xml" token="<!--end-->" value="-->"/> + <mercury:resolve-dependencies source="maven:pom.xml" id="pom"> + <mercury:local-repository location="${maven.repo.local}"/> + </mercury:resolve-dependencies> + <delete file="${basedir}/dependencies.xml"/> + + <!-- Pull the dependencies for Modello --> + <mercury:resolve-dependencies id="modello"> + <mercury:local-repository location="${maven.repo.local}"/> + <mercury:dependency groupId="org.codehaus.modello" artifactId="modello-maven-plugin" version="${pom.properties.modelloVersion}"/> + </mercury:resolve-dependencies> + + <!-- Pull the dependencies for the MetadataGenerator CLI --> + <mercury:resolve-dependencies id="pmdg"> + <mercury:local-repository path="${maven.repo.local}"/> + <mercury: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="maven.classpath"> + <pathelement location="bootstrap/target/classes"/> + <path refid="sources"/> + <path refid="pom.pathid"/> + <path refid="pmdg.pathid"/> + </path> + + <echo>Using plexus version ${pom.properties.plexusVersion}</echo> + <java fork="fork" classname="org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli" failonerror="true"> + <classpath refid="maven.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="fork" classname="org.codehaus.modello.ModelloCli" failonerror="true"> + <classpath refid="modello.pathid"/> + <arg file="@{file}"/> + <arg value="@{mode}"/> + <arg file="bootstrap/target/generated-sources"/> + <arg value="@{version}"/> + <arg value="false"/> + </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> + + <modello file="maven-model/src/main/mdo/maven.mdo" version="4.0.0"/> + <modello file="maven-lifecycle/src/main/mdo/maven-lifecycle.mdo"/> + <modello file="maven-plugin-api/src/main/mdo/lifecycle.mdo"/> + <modello file="maven-project/src/main/mdo/profiles.mdo"/> + <modello file="maven-core/src/main/mdo/settings.mdo"/> + <modello file="maven-toolchain/src/main/mdo/toolchains.xml"/> + <modello file="maven-compat/src/main/mdo/metadata.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/*"/> + </dirset> + </path> + + <mkdir dir="bootstrap/target/classes"/> + <javac destdir="bootstrap/target/classes" encoding="UTF-8" source="1.5" target="1.5" debug="true"> + <src refid="sources"/> + <classpath refid="pom.pathid"/> + </javac> + + <path id="maven.classpath"> + <pathelement location="bootstrap/target/classes"/> + <pathelement location="maven-compat/src/main/resources"/> + <path refid="sources"/> + <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="true" classname="org.apache.maven.cli.MavenCli" failonerror="true"> + <classpath refid="maven.classpath"/> + <arg value="-e"/> + <arg value="-B"/> + <arg value="clean"/> + <arg value="install"/> + <arg value="-Dmaven.repo.local=${maven.repo.local}"/> + <arg value="-Dsurefire.useFile=${surefire.useFile}"/> + </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,maven-assembly" description="extracts the maven assembly into maven.home"> + <echo>Extracting assembly to ${maven.home.dirname} ...</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.dirname}"/> + <chmod perm="+x"> + <fileset dir="${maven.home}/bin"> + <include name="mvn"/> + </fileset> + </chmod> + </target> + + <target name="all" depends="clean-bootstrap,init,extract-assembly"/> + +</project> Propchange: maven/components/trunk/build-mercury.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/build-mercury.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"