You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/01/12 02:47:59 UTC

svn commit: r733575 - /maven/components/trunk/build-mercury.xml

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="&lt;!--start--&gt;" value="&lt;!--"/>
+    <replace file="${basedir}/dependencies.xml" token="&lt;!--end--&gt;" value="--&gt;"/>
+    <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"