You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2004/06/10 14:26:32 UTC

svn commit: rev 21000 - in avalon/trunk: central/system runtime runtime/framework runtime/logging runtime/meta runtime/repository runtime/test runtime/test/dynamics runtime/test/includes runtime/test/playground runtime/test/testa runtime/test/testb runtime/test/testc runtime/test/testd runtime/test/teste runtime/util tools/project/src/main/org/apache/avalon/tools/home tools/project/src/main/org/apache/avalon/tools/tasks tools/project/src/test

Author: mcconnell
Date: Thu Jun 10 05:26:31 2004
New Revision: 21000

Added:
   avalon/trunk/runtime/test/build.properties   (contents, props changed)
   avalon/trunk/runtime/test/build.xml   (contents, props changed)
Modified:
   avalon/trunk/central/system/index.xml
   avalon/trunk/runtime/build.xml
   avalon/trunk/runtime/framework/build.xml
   avalon/trunk/runtime/logging/build.xml
   avalon/trunk/runtime/meta/build.xml
   avalon/trunk/runtime/repository/build.xml
   avalon/trunk/runtime/test/dynamics/build.properties
   avalon/trunk/runtime/test/includes/build.properties
   avalon/trunk/runtime/test/playground/build.properties
   avalon/trunk/runtime/test/testa/build.properties
   avalon/trunk/runtime/test/testb/build.properties
   avalon/trunk/runtime/test/testc/build.properties
   avalon/trunk/runtime/test/testd/build.properties
   avalon/trunk/runtime/test/teste/build.properties
   avalon/trunk/runtime/util/build.xml
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java
   avalon/trunk/tools/project/src/test/build.xml
Log:
Adding improved reactor build.

Modified: avalon/trunk/central/system/index.xml
==============================================================================
--- avalon/trunk/central/system/index.xml	(original)
+++ avalon/trunk/central/system/index.xml	Thu Jun 10 05:26:31 2004
@@ -319,7 +319,7 @@
     Avalon Test.
     -->
 
-    <project basedir="../../runtime/meta/test/dynamics">
+    <project basedir="../../runtime/test/dynamics">
       <info>
         <group>avalon/test</group>
         <name>avalon-test-dynamics</name>
@@ -334,7 +334,7 @@
       </dependencies>
     </project>
 
-    <project basedir="../../runtime/meta/test/playground">
+    <project basedir="../../runtime/test/playground">
       <info>
         <group>avalon/test</group>
         <name>avalon-test-playground</name>
@@ -350,7 +350,7 @@
       </dependencies>
     </project>
 
-    <project basedir="../../runtime/meta/test/testa">
+    <project basedir="../../runtime/test/testa">
       <info>
         <group>avalon/test</group>
         <name>avalon-test-testa</name>
@@ -366,7 +366,7 @@
       </dependencies>
     </project>
 
-    <project basedir="../../runtime/meta/test/testb">
+    <project basedir="../../runtime/test/testb">
       <info>
         <group>avalon/test</group>
         <name>avalon-test-testb</name>
@@ -381,7 +381,7 @@
       </dependencies>
     </project>
 
-    <project basedir="../../runtime/meta/test/testc">
+    <project basedir="../../runtime/test/testc">
       <info>
         <group>avalon/test</group>ss
         <name>avalon-test-testc</name>
@@ -396,7 +396,7 @@
       </dependencies>
     </project>
 
-    <project basedir="../../runtime/meta/test/testd">
+    <project basedir="../../runtime/test/testd">
       <info>
         <group>avalon/test</group>
         <name>avalon-test-testd</name>
@@ -411,7 +411,7 @@
       </dependencies>
     </project>
 
-    <project basedir="../../runtime/meta/test/teste">
+    <project basedir="../../runtime/test/teste">
       <info>
         <group>avalon/test</group>
         <name>avalon-test-teste</name>
@@ -426,6 +426,13 @@
       </dependencies>
     </project>
 
+    <project basedir="../../runtime/test/includes">
+      <info>
+        <group>avalon/test</group>
+        <name>avalon-test-includes</name>
+      </info>
+    </project>
+
     <!--
     Avalon Repository.
     -->
@@ -724,6 +731,7 @@
           <projectref key="avalon-util-extension-impl"/>
           <projectref key="avalon-util-lifecycle"/>
           <projectref key="avalon-logging-impl" build="false" test="true"/>
+          <projectref key="avalon-test-dynamics" build="false" test="true"/>
         </projects>
       </dependencies>
     </project>

Modified: avalon/trunk/runtime/build.xml
==============================================================================
--- avalon/trunk/runtime/build.xml	(original)
+++ avalon/trunk/runtime/build.xml	Thu Jun 10 05:26:31 2004
@@ -3,22 +3,6 @@
 <project name="runtime" default="dist" basedir="." xmlns:x="antlib:org.apache.avalon.tools">
 
   <property file="build.properties"/>
-
-  <path id="targets">
-    <fileset dir="." includes="**/build.xml" excludes="build.xml,framework/build.xml,logging/build.xml,meta/build.xml,repository/build.xml,util/build.xml,**/target/**"/>
-  </path>
-
-  <target name="dist" depends="">
-    <x:home/>
-    <x:reactor>
-      <path refid="targets"/>
-    </x:reactor>
-  </target>
-
-  <target name="clean" depends="">
-    <subant inheritAll="false" 
-       genericantfile="${project.home}/build/standard.xml" target="clean"
-       buildpathref="targets"/>
-  </target>
+  <import file="${project.home}/build/reactor.xml"/>
 
 </project>

Modified: avalon/trunk/runtime/framework/build.xml
==============================================================================
--- avalon/trunk/runtime/framework/build.xml	(original)
+++ avalon/trunk/runtime/framework/build.xml	Thu Jun 10 05:26:31 2004
@@ -3,22 +3,6 @@
 <project name="test" default="build" basedir="." xmlns:x="antlib:org.apache.avalon.tools">
 
   <property file="build.properties"/>
-
-  <path id="targets">
-    <fileset dir="." includes="**/build.xml" excludes="build.xml"/>
-  </path>
-
-  <target name="build" depends="">
-    <x:home/>
-    <x:reactor>
-      <path refid="targets"/>
-    </x:reactor>
-  </target>
-
-  <target name="clean" depends="">
-    <subant inheritAll="false" 
-       genericantfile="${project.home}/build/standard.xml" target="clean"
-       buildpathref="targets"/>
-  </target>
+  <import file="${project.home}/build/reactor.xml"/>
 
 </project>

Modified: avalon/trunk/runtime/logging/build.xml
==============================================================================
--- avalon/trunk/runtime/logging/build.xml	(original)
+++ avalon/trunk/runtime/logging/build.xml	Thu Jun 10 05:26:31 2004
@@ -3,22 +3,6 @@
 <project name="avalon-logging" default="dist" basedir="." xmlns:x="antlib:org.apache.avalon.tools">
 
   <property file="build.properties"/>
-
-  <path id="targets">
-    <fileset dir="." includes="**/build.xml" excludes="build.xml"/>
-  </path>
-
-  <target name="dist" depends="">
-    <x:home/>
-    <x:reactor>
-      <path refid="targets"/>
-    </x:reactor>
-  </target>
-
-  <target name="clean" depends="">
-    <subant inheritAll="false" 
-       genericantfile="${project.home}/build/standard.xml" target="clean"
-       buildpathref="targets"/>
-  </target>
+  <import file="${project.home}/build/reactor.xml"/>
 
 </project>

Modified: avalon/trunk/runtime/meta/build.xml
==============================================================================
--- avalon/trunk/runtime/meta/build.xml	(original)
+++ avalon/trunk/runtime/meta/build.xml	Thu Jun 10 05:26:31 2004
@@ -4,22 +4,6 @@
     xmlns:x="antlib:org.apache.avalon.tools">
 
   <property file="build.properties"/>
-
-  <path id="targets">
-    <fileset dir="." includes="**/build.xml" excludes="build.xml"/>
-  </path>
-
-  <target name="build" depends="">
-    <x:home/>
-    <x:reactor>
-      <path refid="targets"/>
-    </x:reactor>
-  </target>
-
-  <target name="clean" depends="">
-    <subant inheritAll="false" 
-       genericantfile="${project.home}/build/standard.xml" target="clean"
-       buildpathref="targets"/>
-  </target>
+  <import file="${project.home}/build/reactor.xml"/>
 
 </project>

Modified: avalon/trunk/runtime/repository/build.xml
==============================================================================
--- avalon/trunk/runtime/repository/build.xml	(original)
+++ avalon/trunk/runtime/repository/build.xml	Thu Jun 10 05:26:31 2004
@@ -4,22 +4,6 @@
     xmlns:x="antlib:org.apache.avalon.tools">
 
   <property file="build.properties"/>
-
-  <path id="targets">
-    <fileset dir="." includes="**/build.xml" excludes="build.xml"/>
-  </path>
-
-  <target name="build" depends="">
-    <x:home/>
-    <x:reactor>
-      <path refid="targets"/>
-    </x:reactor>
-  </target>
-
-  <target name="clean" depends="">
-    <subant inheritAll="false" 
-       genericantfile="${project.home}/build/standard.xml" target="clean"
-       buildpathref="targets"/>
-  </target>
+  <import file="${project.home}/build/reactor.xml"/>
 
 </project>

Added: avalon/trunk/runtime/test/build.properties
==============================================================================
--- (empty file)
+++ avalon/trunk/runtime/test/build.properties	Thu Jun 10 05:26:31 2004
@@ -0,0 +1 @@
+project.home = ../../central/system

Added: avalon/trunk/runtime/test/build.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/runtime/test/build.xml	Thu Jun 10 05:26:31 2004
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<project name="test" default="build" basedir="." 
+    xmlns:x="antlib:org.apache.avalon.tools">
+
+  <property file="build.properties"/>
+  <import file="${project.home}/build/reactor.xml"/>
+
+</project>

Modified: avalon/trunk/runtime/test/dynamics/build.properties
==============================================================================
--- avalon/trunk/runtime/test/dynamics/build.properties	(original)
+++ avalon/trunk/runtime/test/dynamics/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-dynamics
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/test/includes/build.properties
==============================================================================
--- avalon/trunk/runtime/test/includes/build.properties	(original)
+++ avalon/trunk/runtime/test/includes/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-includes
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/test/playground/build.properties
==============================================================================
--- avalon/trunk/runtime/test/playground/build.properties	(original)
+++ avalon/trunk/runtime/test/playground/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-playground
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/test/testa/build.properties
==============================================================================
--- avalon/trunk/runtime/test/testa/build.properties	(original)
+++ avalon/trunk/runtime/test/testa/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-testa
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/test/testb/build.properties
==============================================================================
--- avalon/trunk/runtime/test/testb/build.properties	(original)
+++ avalon/trunk/runtime/test/testb/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-testb
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/test/testc/build.properties
==============================================================================
--- avalon/trunk/runtime/test/testc/build.properties	(original)
+++ avalon/trunk/runtime/test/testc/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-testc
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/test/testd/build.properties
==============================================================================
--- avalon/trunk/runtime/test/testd/build.properties	(original)
+++ avalon/trunk/runtime/test/testd/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-testd
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/test/teste/build.properties
==============================================================================
--- avalon/trunk/runtime/test/teste/build.properties	(original)
+++ avalon/trunk/runtime/test/teste/build.properties	Thu Jun 10 05:26:31 2004
@@ -1,2 +1,2 @@
 project.name = avalon-test-teste
-project.home = ../../../../central/system
+project.home = ../../../central/system

Modified: avalon/trunk/runtime/util/build.xml
==============================================================================
--- avalon/trunk/runtime/util/build.xml	(original)
+++ avalon/trunk/runtime/util/build.xml	Thu Jun 10 05:26:31 2004
@@ -3,22 +3,6 @@
 <project name="test" default="build" basedir="." xmlns:x="antlib:org.apache.avalon.tools">
 
   <property file="build.properties"/>
-
-  <path id="targets">
-    <fileset dir="." includes="**/build.xml" excludes="build.xml"/>
-  </path>
-
-  <target name="build" depends="">
-    <x:home/>
-    <x:reactor>
-      <path refid="targets"/>
-    </x:reactor>
-  </target>
-
-  <target name="clean" depends="">
-    <subant inheritAll="false" 
-       genericantfile="${project.home}/build/standard.xml" target="clean"
-       buildpathref="targets"/>
-  </target>
+  <import file="${project.home}/build/reactor.xml"/>
 
 </project>

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java	Thu Jun 10 05:26:31 2004
@@ -143,6 +143,27 @@
         return m_repository;
     }
 
+    public Resource[] getResources()
+    {
+        return (Resource[]) m_resources.values().toArray( new Resource[0] );
+
+    }
+    public Definition[] getDefinitions()
+      throws BuildException
+    {
+        ArrayList list = new ArrayList();
+        Resource[] resources = getResources();
+        for( int i=0; i<resources.length; i++ )
+        {
+            Resource resource = resources[i];
+            if( resource instanceof Definition )
+            {
+                list.add( resource );
+            }
+        }
+        return (Definition[]) list.toArray( new Definition[0] );
+    }
+
     public Plugin getPlugin( PluginRef ref )
       throws BuildException
     {

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java	Thu Jun 10 05:26:31 2004
@@ -187,9 +187,7 @@
     private File getUnitTestResourcesDirectory( File build )
     {
         File etc = new File( build, "etc" );
-        File test = new File( etc, "test" );
-        File unit = new File( test, "unit" );
-        return unit;
+        return new File( etc, "test" );
     }
 
     private void copyCompileResource( File src, File classes )

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ReactorTask.java	Thu Jun 10 05:26:31 2004
@@ -57,6 +57,8 @@
 {
     private static final String BANNER = 
       "------------------------------------------------------------------------";
+
+    private String m_target;
     private Path m_path;
     private List m_defs;
 
@@ -65,38 +67,47 @@
         if( !isInitialized() )
         {
             super.init();
-            m_path = new Path( getProject() );
         }
     }
 
+    public void setTarget( final String target )
+    {
+        m_target = target;
+    }
+
     public void addConfigured( final Path path )
     {
-        m_path.add( path );
+        getPath().add( path );
     }
 
     public void addConfigured( final DirSet dirset )
     {
-        m_path.addDirset( dirset );
+        getPath().addDirset( dirset );
     }
 
     public void addConfigured( final FileSet fileset )
     {
-        m_path.addFileset( fileset );
+        getPath().addFileset( fileset );
     }
 
     public void addConfigured( final FileList list ) 
     {
-        m_path.addFilelist( list );
+        getPath().addFilelist( list );
     }
 
     public void execute() throws BuildException 
     {
         final Project project = getProject();
         log( "Finding project defintions." );
+        long now = System.currentTimeMillis();
         m_defs = getDefinitions();
+        long discovery = System.currentTimeMillis() - now;
+
+        log( "Discovery took: (" + discovery + " msecs.)" );
         log( "Build sequence for projects." );
         final Definition[] defs = walkGraph();
-        log( "Sequence established:" );
+        long graph = System.currentTimeMillis() - discovery - now;
+        log( "Sequence established: (" + graph + " msecs.)" );
         project.log( BANNER );
         for( int i=0; i<defs.length; i++ )
         {
@@ -118,12 +129,25 @@
         }
     }
 
+    private Path getPath()
+    {
+        if( null == m_path )
+        {
+            m_path = new Path( getProject() );
+        }
+        return m_path;
+    }
+
     public void build( final Definition definition )
     {
         final Ant ant = (Ant) getProject().createTask( "ant" );
         ant.setDir( definition.getBasedir() );
         ant.setInheritRefs( false );
         ant.setInheritAll( false );
+        if( null != m_target )
+        {
+            ant.setTarget( m_target );
+        }
         ant.init();
         ant.execute();
     }
@@ -189,10 +213,47 @@
 
     private List getDefinitions()
     {
-        final ArrayList list = new ArrayList();
         final Project project = getProject();
-        final File basedir = project.getBaseDir();
-        final String[] names = m_path.list();
+        final File basedir = project.getBaseDir(); 
+        if( null == m_path )
+        {
+            return getLocalDefinitions( project, basedir );
+        }
+        else
+        {
+            return getExplicitDefinitions( project, basedir );
+        }
+    }
+
+    private List getLocalDefinitions( Project project, File basedir )
+    {
+        try
+        {
+            final ArrayList list = new ArrayList();
+            String path = basedir.getCanonicalPath();
+            Definition[] defs = getHome().getDefinitions();
+            for( int i=0; i<defs.length; i++ )
+            {
+                Definition def = defs[i];
+                String base = def.getBasedir().getCanonicalPath();
+                if( base.startsWith( path ) )
+                {
+                    list.add( def );
+                }
+            }
+            return list;
+        }
+        catch( IOException ioe )
+        {
+            throw new BuildException( ioe );
+        }
+    }
+
+    private List getExplicitDefinitions( Project project, File basedir )
+    {
+        final ArrayList list = new ArrayList();
+
+        final String[] names = getPath().list();
         for( int i=0; i<names.length; i++ )
         {
             final String path = names[i];

Modified: avalon/trunk/tools/project/src/test/build.xml
==============================================================================
--- avalon/trunk/tools/project/src/test/build.xml	(original)
+++ avalon/trunk/tools/project/src/test/build.xml	Thu Jun 10 05:26:31 2004
@@ -2,21 +2,15 @@
 
 <project name="test" default="build" basedir="." xmlns:x="antlib:org.apache.avalon.tools">
 
-  <path id="targets">
-    <dirset dir="projects" includes="*"/>
-  </path>
-
   <target name="build" depends="">
     <property file="build.properties"/>
     <x:home/>
-    <x:reactor>
-      <path refid="targets"/>
-    </x:reactor>
+    <x:reactor/>
   </target>
 
   <target name="clean" depends="">
-    <subant inheritAll="false" genericantfile="standard.xml" target="clean"
-       buildpathref="targets"/>
+    <x:home/>
+    <x:reactor target="clean"/>
   </target>
 
 </project>

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org