Browse Source

Update names of properties.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269069 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
157d8f04d2
4 changed files with 96 additions and 140 deletions
  1. +4
    -2
      proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java
  2. +61
    -103
      proposal/myrmidon/src/java/org/apache/myrmidon/Main.java
  3. +28
    -32
      proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java
  4. +3
    -3
      proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java

+ 4
- 2
proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java View File

@@ -15,6 +15,8 @@ package org.apache.myrmidon;
interface Constants interface Constants
{ {
//Constants to indicate the build of Ant/Myrmidon //Constants to indicate the build of Ant/Myrmidon
String BUILD_DATE = "@@DATE@@";
String BUILD_VERSION = "@@VERSION@@";
String BUILD_DATE = "@@DATE@@";
String BUILD_VERSION = "@@VERSION@@";

String BUILD_DESCRIPTION = "Myrmidon " + BUILD_VERSION + " compiled on " + BUILD_DATE;
} }

+ 61
- 103
proposal/myrmidon/src/java/org/apache/myrmidon/Main.java View File

@@ -46,7 +46,7 @@ import org.apache.myrmidon.listeners.ProjectListener;


/** /**
* The class to kick the tires and light the fires. * The class to kick the tires and light the fires.
* Starts ant, loads ProjectBuilder, builds project then uses ProjectManager
* Starts myrmidon, loads ProjectBuilder, builds project then uses ProjectManager
* to run project. * to run project.
* *
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
@@ -54,19 +54,6 @@ import org.apache.myrmidon.listeners.ProjectListener;
public class Main public class Main
extends AbstractLoggable extends AbstractLoggable
{ {
//Constants to indicate the build of Ant/Myrmidon
public final static String VERSION =
"Ant " + Constants.BUILD_VERSION + " compiled on " + Constants.BUILD_DATE;

//default log level
protected final static String DEFAULT_LOGLEVEL = "WARN";

//Some defaults for file locations/names
protected final static String DEFAULT_FILENAME = "build.ant";

protected final static String DEFAULT_LISTENER =
"org.apache.myrmidon.listeners.DefaultProjectListener";

//defines for the Command Line options //defines for the Command Line options
private static final int HELP_OPT = 'h'; private static final int HELP_OPT = 'h';
private static final int QUIET_OPT = 'q'; private static final int QUIET_OPT = 'q';
@@ -95,10 +82,10 @@ public class Main
}; };


private ProjectListener m_listener; private ProjectListener m_listener;
private File m_homeDir;
private Parameters m_parameters = new Parameters();


/** /**
* Main entry point called to run standard Ant.
* Main entry point called to run standard Myrmidon.
* *
* @param args the args * @param args the args
*/ */
@@ -108,11 +95,6 @@ public class Main
main.setLogger( Hierarchy.getDefaultHierarchy().getLoggerFor( "default" ) ); main.setLogger( Hierarchy.getDefaultHierarchy().getLoggerFor( "default" ) );


try { main.execute( args ); } try { main.execute( args ); }
catch( final TaskException ae )
{
main.getLogger().error( "Error: " + ae.getMessage() );
main.getLogger().debug( "Exception..." + ExceptionUtil.printStackTrace( ae ) );
}
catch( final Throwable throwable ) catch( final Throwable throwable )
{ {
main.getLogger().error( "Error: " + throwable ); main.getLogger().error( "Error: " + throwable );
@@ -198,10 +180,10 @@ public class Main
INCREMENTAL_OPT, INCREMENTAL_OPT,
"Run in incremental mode" ); "Run in incremental mode" );
options[9] = options[9] =
new CLOptionDescriptor( "ant-home",
new CLOptionDescriptor( "myrmidon-home",
CLOptionDescriptor.ARGUMENT_REQUIRED, CLOptionDescriptor.ARGUMENT_REQUIRED,
HOME_DIR_OPT, HOME_DIR_OPT,
"Specify ant home directory" );
"Specify myrmidon home directory" );
options[10] = options[10] =
new CLOptionDescriptor( "define", new CLOptionDescriptor( "define",
CLOptionDescriptor.ARGUMENTS_REQUIRED_2, CLOptionDescriptor.ARGUMENTS_REQUIRED_2,
@@ -226,13 +208,15 @@ public class Main
final List clOptions = parser.getArguments(); final List clOptions = parser.getArguments();
final int size = clOptions.size(); final int size = clOptions.size();
final ArrayList targets = new ArrayList(); final ArrayList targets = new ArrayList();
String filename = null;
String listenerName = null;
String logLevel = null;
String homeDir = null;
String taskLibDir = null;
boolean incremental = false;
HashMap defines = new HashMap();
final HashMap defines = new HashMap();

m_parameters.setParameter( "filename", "build.ant" );
m_parameters.setParameter( "log.level", "WARN" );
m_parameters.setParameter( "listener", "org.apache.myrmidon.listeners.DefaultProjectListener" );
m_parameters.setParameter( "incremental", "false" );

//System property set up by launcher
m_parameters.setParameter( "myrmidon.home", System.getProperty( "myrmidon.home" ) );


for( int i = 0; i < size; i++ ) for( int i = 0; i < size; i++ )
{ {
@@ -240,48 +224,45 @@ public class Main


switch( option.getId() ) switch( option.getId() )
{ {
case 0: targets.add( option.getArgument() ); break;
case HELP_OPT: usage( options ); return; case HELP_OPT: usage( options ); return;
case VERSION_OPT: System.out.println( VERSION ); return;
case FILE_OPT: filename = option.getArgument(); break;
case HOME_DIR_OPT: homeDir = option.getArgument(); break;
case TASKLIB_DIR_OPT: taskLibDir = option.getArgument(); break;
case VERBOSE_OPT: logLevel = "INFO"; break;
case QUIET_OPT: logLevel = "ERROR"; break;
case LOG_LEVEL_OPT: logLevel = option.getArgument(); break;
case LISTENER_OPT: listenerName = option.getArgument(); break;
case INCREMENTAL_OPT: incremental = true; break;
case VERSION_OPT: System.out.println( Constants.BUILD_DESCRIPTION ); return;

case HOME_DIR_OPT: m_parameters.setParameter( "myrmidon.home", option.getArgument() ); break;
case TASKLIB_DIR_OPT:
m_parameters.setParameter( "myrmidon.lib.path", option.getArgument() );
break;

case LOG_LEVEL_OPT: m_parameters.setParameter( "log.level", option.getArgument() ); break;
case VERBOSE_OPT: m_parameters.setParameter( "log.level", "INFO" ); break;
case QUIET_OPT: m_parameters.setParameter( "log.level", "ERROR" ); break;

case INCREMENTAL_OPT: m_parameters.setParameter( "incremental", "true" ); break;

case FILE_OPT: m_parameters.setParameter( "filename", option.getArgument() ); break;
case LISTENER_OPT: m_parameters.setParameter( "listener", option.getArgument() ); break;


case DEFINE_OPT: case DEFINE_OPT:
defines.put( option.getArgument( 0 ), option.getArgument( 1 ) ); defines.put( option.getArgument( 0 ), option.getArgument( 1 ) );
break; break;

case 0: targets.add( option.getArgument() ); break;
} }
} }


if( null == logLevel ) logLevel = DEFAULT_LOGLEVEL;
if( null == listenerName ) listenerName = DEFAULT_LISTENER;
if( null == filename ) filename = DEFAULT_FILENAME;

//handle logging... //handle logging...
final String logLevel = m_parameters.getParameter( "log.level", null );
setLogger( createLogger( logLevel ) ); setLogger( createLogger( logLevel ) );


//if ant home not set then use system property ant.home
//that was set up by launcher.
if( null == homeDir ) homeDir = System.getProperty( "ant.home" );

final Parameters parameters = new Parameters();
parameters.setParameter( "ant.home", homeDir );

if( null != taskLibDir ) parameters.setParameter( "ant.path.task-lib", taskLibDir );

m_homeDir = (new File( homeDir )).getAbsoluteFile();
if( !m_homeDir.isDirectory() )
final String home = m_parameters.getParameter( "myrmidon.home", null );
final File homeDir = (new File( home )).getAbsoluteFile();
if( !homeDir.isDirectory() )
{ {
throw new TaskException( "ant-home (" + m_homeDir + ") is not a directory" );
throw new TaskException( "myrmidon-home (" + homeDir + ") is not a directory" );
} }


final File libDir = new File( m_homeDir, "lib" );
final File libDir = new File( homeDir, "lib" );


final String filename = m_parameters.getParameter( "filename", null );
final File buildFile = (new File( filename )).getCanonicalFile(); final File buildFile = (new File( filename )).getCanonicalFile();
if( !buildFile.isFile() ) if( !buildFile.isFile() )
{ {
@@ -295,17 +276,23 @@ public class Main
Thread.currentThread().setContextClassLoader( classLoader ); Thread.currentThread().setContextClassLoader( classLoader );


//handle listener.. //handle listener..
final String listenerName = m_parameters.getParameter( "listener", null );
final ProjectListener listener = createListener( listenerName ); final ProjectListener listener = createListener( listenerName );


final LogTarget target = new LogTargetToListenerAdapter( listener );
getLogger().setLogTargets( new LogTarget[] { target } );



getLogger().warn( "Ant Build File: " + buildFile ); getLogger().warn( "Ant Build File: " + buildFile );
getLogger().info( "Ant Home Directory: " + m_homeDir );
getLogger().info( "Ant Home Directory: " + homeDir );
//getLogger().info( "Ant Bin Directory: " + m_binDir ); //getLogger().info( "Ant Bin Directory: " + m_binDir );
//getLogger().debug( "Ant Lib Directory: " + m_libDir ); //getLogger().debug( "Ant Lib Directory: " + m_libDir );
//getLogger().debug( "Ant Task Lib Directory: " + m_taskLibDir ); //getLogger().debug( "Ant Task Lib Directory: " + m_taskLibDir );


final Embeddor embeddor = new MyrmidonEmbeddor(); final Embeddor embeddor = new MyrmidonEmbeddor();
setupLogger( embeddor ); setupLogger( embeddor );
embeddor.parameterize( parameters );
embeddor.parameterize( m_parameters );
embeddor.initialize(); embeddor.initialize();
embeddor.start(); embeddor.start();


@@ -320,15 +307,21 @@ public class Main
BufferedReader reader = null; BufferedReader reader = null;


//loop over build if we are in incremental mode.. //loop over build if we are in incremental mode..
final boolean incremental = m_parameters.getParameterAsBoolean( "incremental", false );
while( true ) while( true )
{ {
//actually do the build ... //actually do the build ...
final TaskContext context = new DefaultTaskContext(); final TaskContext context = new DefaultTaskContext();
setupContext( context, defines );
//Add CLI defines
addToContext( context, defines );

//Add system properties second so that they overide user-defined properties
addToContext( context, System.getProperties() );


context.setProperty( TaskContext.BASE_DIRECTORY, project.getBaseDirectory() ); context.setProperty( TaskContext.BASE_DIRECTORY, project.getBaseDirectory() );
context.setProperty( Project.PROJECT_FILE, buildFile ); context.setProperty( Project.PROJECT_FILE, buildFile );
//context.setProperty( Project.PROJECT, projectName );
//context.setProperty( Project.PROJECT, project.getName() );


doBuild( manager, project, context, targets ); doBuild( manager, project, context, targets );


@@ -405,8 +398,7 @@ public class Main
throw new TaskException( "Unknown log level - " + logLevel ); throw new TaskException( "Unknown log level - " + logLevel );
} }


final Logger logger =
Hierarchy.getDefaultHierarchy().getLoggerFor( "ant" );
final Logger logger = Hierarchy.getDefaultHierarchy().getLoggerFor( "myrmidon" );


logger.setPriority( priority ); logger.setPriority( priority );


@@ -416,26 +408,18 @@ public class Main
/** /**
* Setup project listener. * Setup project listener.
* *
* @param listenerName the name of project listener
* @param listener the classname of project listener
*/ */
protected ProjectListener createListener( final String listenerName )
protected ProjectListener createListener( final String listener )
throws TaskException throws TaskException
{ {
ProjectListener result = null;

try { result = (ProjectListener)Class.forName( listenerName ).newInstance(); }
try { return (ProjectListener)Class.forName( listener ).newInstance(); }
catch( final Throwable t ) catch( final Throwable t )
{ {
throw new TaskException( "Error creating the listener " + listenerName +
" due to " + ExceptionUtil.printStackTrace( t, 5, true ),
t );
throw new TaskException( "Error creating the listener " + listener +
" due to " + ExceptionUtil.printStackTrace( t, 5, true ),
t );
} }

final LogTarget target = new LogTargetToListenerAdapter( result );

getLogger().setLogTargets( new LogTarget[] { target } );

return result;
} }


/** /**
@@ -478,32 +462,6 @@ public class Main
return classLoader; return classLoader;
} }


/**
* Setup the projects context so all the "default" properties are defined.
* This also takes a hashmap that is added to context. Usually these are the
* ones defined on command line.
*
* @param project the project
* @param defines the defines
* @exception TaskException if an error occurs
*/
protected void setupContext( final TaskContext context, final HashMap defines )
throws TaskException
{
//put these values into defines so that they overide
//user-defined proeprties
//defines.put( AntContextResources.HOME_DIR, m_homeDir );
//defines.put( AntContextResources.BIN_DIR, m_binDir );
//defines.put( AntContextResources.LIB_DIR, m_libDir );
//defines.put( AntContextResources.TASKLIB_DIR, m_taskLibDir );
//defines.put( TaskletContext.JAVA_VERSION, getJavaVersion() );

addToContext( context, defines );

//Add system properties second so that they overide user-defined properties
addToContext( context, System.getProperties() );
}

/** /**
* Helper method to add values to a context * Helper method to add values to a context
* *


+ 28
- 32
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java View File

@@ -30,7 +30,8 @@ import org.apache.myrmidon.components.manager.ProjectManager;
import org.apache.myrmidon.components.deployer.TskDeployer; import org.apache.myrmidon.components.deployer.TskDeployer;


/** /**
* Default implementation of Ant runtime.
* Default implementation of Embeddor.
* Instantiate this to embed inside other applications.
* *
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
@@ -41,7 +42,7 @@ public class MyrmidonEmbeddor
private ConverterEngine m_converterEngine; private ConverterEngine m_converterEngine;
private DataTypeEngine m_dataTypeEngine; private DataTypeEngine m_dataTypeEngine;
private Executor m_executor; private Executor m_executor;
private ProjectManager m_projectEngine;
private ProjectManager m_projectManager;


private ProjectBuilder m_builder; private ProjectBuilder m_builder;
private TskDeployer m_deployer; private TskDeployer m_deployer;
@@ -88,7 +89,7 @@ public class MyrmidonEmbeddor
*/ */
public ProjectManager getProjectManager() public ProjectManager getProjectManager()
{ {
return m_projectEngine;
return m_projectManager;
} }


/** /**
@@ -136,7 +137,7 @@ public class MyrmidonEmbeddor
m_converterEngine = null; m_converterEngine = null;
m_dataTypeEngine = null; m_dataTypeEngine = null;
m_executor = null; m_executor = null;
m_projectEngine = null;
m_projectManager = null;
m_builder = null; m_builder = null;
m_deployer = null; m_deployer = null;
m_configurer = null; m_configurer = null;
@@ -161,24 +162,23 @@ public class MyrmidonEmbeddor
final Parameters defaults = new Parameters(); final Parameters defaults = new Parameters();


//create all the default properties for files/directories //create all the default properties for files/directories
defaults.setParameter( "ant.path.bin", "bin" );
defaults.setParameter( "ant.path.lib", "lib" );
defaults.setParameter( "ant.path.task-lib", "lib" );
defaults.setParameter( "myrmidon.bin.path", "bin" );
defaults.setParameter( "myrmidon.lib.path", "lib" );


//create all the default properties for components //create all the default properties for components
defaults.setParameter( "ant.comp.converter",
defaults.setParameter( "myrmidon.comp.converter",
"org.apache.ant.convert.engine.DefaultConverterEngine" ); "org.apache.ant.convert.engine.DefaultConverterEngine" );
defaults.setParameter( "ant.comp.datatype",
defaults.setParameter( "myrmidon.comp.datatype",
"org.apache.ant.tasklet.engine.DefaultDataTypeEngine" ); "org.apache.ant.tasklet.engine.DefaultDataTypeEngine" );
defaults.setParameter( "ant.comp.task",
defaults.setParameter( "myrmidon.comp.task",
"org.apache.myrmidon.components.executor.DefaultExecutor" ); "org.apache.myrmidon.components.executor.DefaultExecutor" );
defaults.setParameter( "ant.comp.project",
defaults.setParameter( "myrmidon.comp.project",
"org.apache.myrmidon.components.manager.DefaultProjectManager" ); "org.apache.myrmidon.components.manager.DefaultProjectManager" );
defaults.setParameter( "ant.comp.builder",
defaults.setParameter( "myrmidon.comp.builder",
"org.apache.myrmidon.components.builder.DefaultProjectBuilder" ); "org.apache.myrmidon.components.builder.DefaultProjectBuilder" );
defaults.setParameter( "ant.comp.deployer",
defaults.setParameter( "myrmidon.comp.deployer",
"org.apache.myrmidon.components.deployer.DefaultTskDeployer" ); "org.apache.myrmidon.components.deployer.DefaultTskDeployer" );
defaults.setParameter( "ant.comp.configurer",
defaults.setParameter( "myrmidon.comp.configurer",
"org.apache.myrmidon.components.configurer.DefaultConfigurer" ); "org.apache.myrmidon.components.configurer.DefaultConfigurer" );


return defaults; return defaults;
@@ -200,7 +200,7 @@ public class MyrmidonEmbeddor
componentManager.put( "org.apache.avalon.framework.camelot.Factory", m_factory ); componentManager.put( "org.apache.avalon.framework.camelot.Factory", m_factory );


//Following components required when Myrmidon is used as build tool //Following components required when Myrmidon is used as build tool
componentManager.put( "org.apache.myrmidon.components.manager.ProjectManager", m_projectEngine );
componentManager.put( "org.apache.myrmidon.components.manager.ProjectManager", m_projectManager );
componentManager.put( "org.apache.myrmidon.components.builder.ProjectBuilder", m_builder ); componentManager.put( "org.apache.myrmidon.components.builder.ProjectBuilder", m_builder );


//Following components required when Myrmidon allows user deployment of tasks etal. //Following components required when Myrmidon allows user deployment of tasks etal.
@@ -223,25 +223,25 @@ public class MyrmidonEmbeddor
{ {
String component = null; String component = null;


component = getParameter( "ant.comp.converter" );
component = getParameter( "myrmidon.comp.converter" );
m_converterEngine = (ConverterEngine)createComponent( component, ConverterEngine.class ); m_converterEngine = (ConverterEngine)createComponent( component, ConverterEngine.class );


component = getParameter( "ant.comp.datatype" );
component = getParameter( "myrmidon.comp.datatype" );
m_dataTypeEngine = (DataTypeEngine)createComponent( component, DataTypeEngine.class ); m_dataTypeEngine = (DataTypeEngine)createComponent( component, DataTypeEngine.class );


component = getParameter( "ant.comp.task" );
component = getParameter( "myrmidon.comp.task" );
m_executor = (Executor)createComponent( component, Executor.class ); m_executor = (Executor)createComponent( component, Executor.class );


component = getParameter( "ant.comp.project" );
m_projectEngine = (ProjectManager)createComponent( component, ProjectManager.class );
component = getParameter( "myrmidon.comp.project" );
m_projectManager = (ProjectManager)createComponent( component, ProjectManager.class );


component = getParameter( "ant.comp.builder" );
component = getParameter( "myrmidon.comp.builder" );
m_builder =(ProjectBuilder)createComponent( component, ProjectBuilder.class ); m_builder =(ProjectBuilder)createComponent( component, ProjectBuilder.class );


component = getParameter( "ant.comp.deployer" );
component = getParameter( "myrmidon.comp.deployer" );
m_deployer = (TskDeployer)createComponent( component, TskDeployer.class ); m_deployer = (TskDeployer)createComponent( component, TskDeployer.class );


component = getParameter( "ant.comp.configurer" );
component = getParameter( "myrmidon.comp.configurer" );
m_configurer = (Configurer)createComponent( component, Configurer.class ); m_configurer = (Configurer)createComponent( component, Configurer.class );
} }


@@ -257,7 +257,7 @@ public class MyrmidonEmbeddor
setupComponent( m_converterEngine ); setupComponent( m_converterEngine );
setupComponent( m_dataTypeEngine ); setupComponent( m_dataTypeEngine );
setupComponent( m_executor ); setupComponent( m_executor );
setupComponent( m_projectEngine );
setupComponent( m_projectManager );
setupComponent( m_builder ); setupComponent( m_builder );
setupComponent( m_deployer ); setupComponent( m_deployer );
setupComponent( m_configurer ); setupComponent( m_configurer );
@@ -293,17 +293,14 @@ public class MyrmidonEmbeddor
{ {
String filepath = null; String filepath = null;


filepath = getParameter( "ant.home" );
filepath = getParameter( "myrmidon.home" );
m_homeDir = (new File( filepath )).getAbsoluteFile(); m_homeDir = (new File( filepath )).getAbsoluteFile();
checkDirectory( m_homeDir, "ant-home" );
checkDirectory( m_homeDir, "home" );


filepath = getParameter( "ant.path.bin" );
filepath = getParameter( "myrmidon.bin.path" );
m_binDir = resolveDirectory( filepath, "bin-dir" ); m_binDir = resolveDirectory( filepath, "bin-dir" );


filepath = getParameter( "ant.path.lib" );
m_libDir = resolveDirectory( filepath, "lib-dir" );

filepath = getParameter( "ant.path.task-lib" );
filepath = getParameter( "myrmidon.lib.path" );
m_taskLibDir = resolveDirectory( filepath, "task-lib-dir" ); m_taskLibDir = resolveDirectory( filepath, "task-lib-dir" );
} }


@@ -363,7 +360,6 @@ public class MyrmidonEmbeddor


/** /**
* Helper method to retrieve current JVM version. * Helper method to retrieve current JVM version.
* Basically stolen from original Ant sources.
* *
* @return the current JVM version * @return the current JVM version
*/ */


+ 3
- 3
proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java View File

@@ -33,9 +33,9 @@ public final class Main
try try
{ {
//actually try to discover the install directory based on where //actually try to discover the install directory based on where
// the ant.jar is
// the myrmidon.jar is
final File installDirectory = findInstallDir(); final File installDirectory = findInstallDir();
System.setProperty( "ant.home", installDirectory.toString() );
System.setProperty( "myrmidon.home", installDirectory.toString() );


//setup classloader appropriately for myrmidon jar //setup classloader appropriately for myrmidon jar
final File libDir = new File( installDirectory, "lib" ); final File libDir = new File( installDirectory, "lib" );
@@ -90,7 +90,7 @@ public final class Main
} }


/** /**
* Finds the ant.jar file in the classpath.
* Finds the myrmidon.jar file in the classpath.
*/ */
private final static File findInstallDir() private final static File findInstallDir()
throws Exception throws Exception


Loading…
Cancel
Save