diff --git a/proposal/myrmidon/lib/avalon-container.jar b/proposal/myrmidon/lib/avalon-container.jar deleted file mode 100644 index d5633d25a..000000000 Binary files a/proposal/myrmidon/lib/avalon-container.jar and /dev/null differ diff --git a/proposal/myrmidon/lib/avalon-framework.jar b/proposal/myrmidon/lib/avalon-framework.jar index 85ef2939e..8d96f32e1 100644 Binary files a/proposal/myrmidon/lib/avalon-framework.jar and b/proposal/myrmidon/lib/avalon-framework.jar differ diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java index 068316bc1..c4dbd601a 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java @@ -10,7 +10,6 @@ package org.apache.ant.modules.core; import java.io.File; import java.net.MalformedURLException; import java.net.URL; -import org.apache.avalon.framework.camelot.DeploymentException; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.Composable; @@ -18,6 +17,7 @@ import org.apache.myrmidon.api.AbstractTask; import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.components.converter.ConverterInfo; import org.apache.myrmidon.components.converter.ConverterRegistry; +import org.apache.myrmidon.components.deployer.DeploymentException; import org.apache.myrmidon.components.deployer.TskDeployer; import org.apache.myrmidon.components.type.DefaultComponentFactory; import org.apache.myrmidon.components.type.TypeManager; diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java index 871b26a15..e4e78ae7e 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java @@ -8,8 +8,9 @@ package org.apache.ant.modules.core; import java.net.URL; -import org.apache.avalon.framework.camelot.DeploymentException; +import org.apache.myrmidon.api.DataType; import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.components.deployer.DeploymentException; import org.apache.myrmidon.components.type.DefaultComponentFactory; /** @@ -35,10 +36,10 @@ public class RegisterDataType } else { - final DefaultComponentFactory factory = + final DefaultComponentFactory factory = new DefaultComponentFactory( new URL[] { url } ); factory.addNameClassMapping( name, className ); - try { getTypeManager().registerType( "org.apache.ant.tasklet.DataType", name, factory ); } + try { getTypeManager().registerType( DataType.ROLE, name, factory ); } catch( final Exception e ) { throw new TaskException( "Failed registering " + name + " from " + url, e ); diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java index f235f9087..e24a9bac4 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java @@ -8,9 +8,9 @@ package org.apache.ant.modules.core; import java.net.URL; -import org.apache.avalon.framework.camelot.DeploymentException; import org.apache.myrmidon.api.Task; import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.components.deployer.DeploymentException; import org.apache.myrmidon.components.type.DefaultComponentFactory; /** @@ -36,7 +36,7 @@ public class RegisterTasklet } else { - final DefaultComponentFactory factory = + final DefaultComponentFactory factory = new DefaultComponentFactory( new URL[] { url } ); factory.addNameClassMapping( name, className ); try { getTypeManager().registerType( Task.ROLE, name, factory ); } diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java index 357dec84f..c919defcd 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java @@ -10,12 +10,12 @@ package org.apache.ant.modules.core; import java.io.File; import java.net.MalformedURLException; import java.net.URL; -import org.apache.avalon.framework.camelot.DeploymentException; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.Composable; -import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.AbstractTask; +import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.components.deployer.DeploymentException; import org.apache.myrmidon.components.deployer.TskDeployer; /** diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java b/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java index c34a06969..45a58eda1 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java @@ -12,7 +12,7 @@ package org.apache.myrmidon; * * @author Peter Donald */ -interface Constants +public interface Constants { //Constants to indicate the build of Ant/Myrmidon String BUILD_DATE = "@@DATE@@"; diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultTskDeployer.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultTskDeployer.java index 9d9bee705..e014ee872 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultTskDeployer.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultTskDeployer.java @@ -9,28 +9,23 @@ package org.apache.myrmidon.components.deployer; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Iterator; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; -import org.apache.avalon.framework.camelot.AbstractDeployer; -import org.apache.avalon.framework.camelot.DefaultLocator; -import org.apache.avalon.framework.camelot.DeployerUtil; -import org.apache.avalon.framework.camelot.DeploymentException; -import org.apache.avalon.framework.camelot.Loader; -import org.apache.avalon.framework.camelot.Registry; -import org.apache.avalon.framework.camelot.RegistryException; import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.Composable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.logger.Loggable; -import org.apache.log.Logger; +import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; +import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.myrmidon.api.Task; +import org.apache.myrmidon.api.DataType; import org.apache.myrmidon.components.converter.ConverterInfo; import org.apache.myrmidon.components.converter.ConverterRegistry; import org.apache.myrmidon.components.executor.Executor; @@ -38,6 +33,7 @@ import org.apache.myrmidon.components.type.ComponentFactory; import org.apache.myrmidon.components.type.DefaultComponentFactory; import org.apache.myrmidon.components.type.TypeManager; import org.apache.myrmidon.converter.Converter; +import org.xml.sax.SAXException; /** * This class deploys a .tsk file into a registry. @@ -45,21 +41,22 @@ import org.apache.myrmidon.converter.Converter; * @author Peter Donald */ public class DefaultTskDeployer - extends AbstractDeployer - implements Composable, TskDeployer, Loggable + extends AbstractLoggable + implements Composable, TskDeployer { private final static String TSKDEF_FILE = "TASK-LIB/taskdefs.xml"; - private ConverterRegistry m_converterInfoRegistry; - private TypeManager m_typeManager; + private DefaultConfigurationBuilder m_configurationBuilder; + private ConverterRegistry m_converterInfoRegistry; + private TypeManager m_typeManager; /** * Default constructor. */ public DefaultTskDeployer() { - m_autoUndeploy = true; - m_type = "Task"; + //m_autoUndeploy = true; + //m_type = "Task"; } /** @@ -75,6 +72,16 @@ public class DefaultTskDeployer m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE ); } + public void deploy( final String location, final URL url ) + throws DeploymentException + { + //checkDeployment( location, url ); + final File file = getFileFor( url ); + + getLogger().info( "Deploying AntLib file (" + file + ") as " + location ); + deployFromFile( location, file ); + } + /** * Deploy a file. * Eventually this should be cached for performance reasons. @@ -86,7 +93,7 @@ public class DefaultTskDeployer protected void deployFromFile( final String location, final File file ) throws DeploymentException { - final ZipFile zipFile = DeployerUtil.getZipFileFor( file ); + final ZipFile zipFile = getZipFileFor( file ); URL url = null; @@ -109,7 +116,7 @@ public class DefaultTskDeployer private void loadResources( final ZipFile zipFile, final String location, final URL url ) throws DeploymentException { - final Configuration taskdefs = DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE ); + final Configuration taskdefs = loadConfiguration( zipFile, TSKDEF_FILE ); final DefaultComponentFactory factory = new DefaultComponentFactory( new URL[] { url } ); @@ -147,9 +154,9 @@ public class DefaultTskDeployer public void deployConverter( String name, String location, URL url ) throws DeploymentException { - checkDeployment( location, url ); - final ZipFile zipFile = DeployerUtil.getZipFileFor( getFileFor( url ) ); - final Configuration taskdefs = DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE ); + //checkDeployment( location, url ); + final ZipFile zipFile = getZipFileFor( getFileFor( url ) ); + final Configuration taskdefs = loadConfiguration( zipFile, TSKDEF_FILE ); try { @@ -178,10 +185,10 @@ public class DefaultTskDeployer public void deployDataType( final String name, final String location, final URL url ) throws DeploymentException { - checkDeployment( location, url ); - final ZipFile zipFile = DeployerUtil.getZipFileFor( getFileFor( url ) ); + //checkDeployment( location, url ); + final ZipFile zipFile = getZipFileFor( getFileFor( url ) ); final Configuration datatypedefs = - DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE ); + loadConfiguration( zipFile, TSKDEF_FILE ); try { @@ -210,9 +217,9 @@ public class DefaultTskDeployer public void deployTask( final String name, final String location, final URL url ) throws DeploymentException { - checkDeployment( location, url ); - final ZipFile zipFile = DeployerUtil.getZipFileFor( getFileFor( url ) ); - final Configuration taskdefs = DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE ); + //checkDeployment( location, url ); + final ZipFile zipFile = getZipFileFor( getFileFor( url ) ); + final Configuration taskdefs = loadConfiguration( zipFile, TSKDEF_FILE ); try { @@ -238,6 +245,106 @@ public class DefaultTskDeployer } } + private DefaultConfigurationBuilder getBuilder() + { + if( null == m_configurationBuilder ) + { + m_configurationBuilder = new DefaultConfigurationBuilder(); + } + + return m_configurationBuilder; + } + + /** + * Retrieve zip file for file. + * + * @param file the file + * @return the zipFile + * @exception DeploymentException if an error occurs + */ + private ZipFile getZipFileFor( final File file ) + throws DeploymentException + { + try { return new ZipFile( file ); } + catch( final IOException ioe ) + { + throw new DeploymentException( "Error opening " + file + + " due to " + ioe.getMessage(), + ioe ); + } + } + + /** + * Utility method to load configuration from zip. + * + * @param zipFile the zip file + * @param filename the property filename + * @return the Configuration + * @exception DeploymentException if an error occurs + */ + private Configuration loadConfiguration( final ZipFile zipFile, final String filename ) + throws DeploymentException + { + return buildConfiguration( loadResourceStream( zipFile, filename ) ); + } + + /** + * Build a configuration tree based on input stream. + * + * @param input the InputStream + * @return the Configuration tree + * @exception DeploymentException if an error occurs + */ + private Configuration buildConfiguration( final InputStream input ) + throws DeploymentException + { + try { return getBuilder().build( input ); } + catch( final SAXException se ) + { + throw new DeploymentException( "Malformed configuration data", se ); + } + catch( final ConfigurationException ce ) + { + throw new DeploymentException( "Error building configuration", ce ); + } + catch( final IOException ioe ) + { + throw new DeploymentException( "Error reading configuration", ioe ); + } + } + + private File getFileFor( final URL url ) + throws DeploymentException + { + File file = null; + + if( url.getProtocol().equals( "file" ) ) + { + file = new File( url.getFile() ); + } + else + { + throw new DeploymentException( "Currently unable to deploy non-local " + + "archives (" + url + ")" ); + } + + file = file.getAbsoluteFile(); + + if( !file.exists() ) + { + throw new DeploymentException( "Could not find application archive at " + + file ); + } + + if( file.isDirectory() ) + { + throw new DeploymentException( "Could not find application archive at " + + file + " as it is a directory." ); + } + + return file; + } + private void handleConverter( final Configuration converter, final URL url, final DefaultComponentFactory factory ) @@ -281,8 +388,37 @@ public class DefaultTskDeployer final String className = datatype.getAttribute( "classname" ); factory.addNameClassMapping( name, className ); - m_typeManager.registerType( "org.apache.ant.tasklet.DataType", name, factory ); + m_typeManager.registerType( DataType.ROLE, name, factory ); getLogger().debug( "Registered datatype " + name + " as " + className ); } + + + /** + * Load a resource from a zip file. + * + * @param zipFile the ZipFile + * @param filename the filename + * @return the InputStream + * @exception DeploymentException if an error occurs + */ + private InputStream loadResourceStream( final ZipFile zipFile, final String filename ) + throws DeploymentException + { + final ZipEntry entry = zipFile.getEntry( filename ); + + if( null == entry ) + { + throw new DeploymentException( "Unable to locate " + filename + + " in " + zipFile.getName() ); + } + + try { return zipFile.getInputStream( entry ); } + catch( final IOException ioe ) + { + throw new DeploymentException( "Error reading " + filename + + " from " + zipFile.getName(), + ioe ); + } + } } diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DeploymentException.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DeploymentException.java new file mode 100644 index 000000000..78881f8da --- /dev/null +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DeploymentException.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) The Apache Software Foundation. All rights reserved. + * + * This software is published under the terms of the Apache Software License + * version 1.1, a copy of which has been included with this distribution in + * the LICENSE file. + */ +package org.apache.myrmidon.components.deployer; + +import org.apache.avalon.framework.CascadingException; + +/** + * Exception to indicate error deploying. + * + * @author Peter Donald + */ +public final class DeploymentException + extends CascadingException +{ + /** + * Construct a new DeploymentException instance. + * + * @param message The detail message for this exception. + */ + public DeploymentException( final String message ) + { + this( message, null ); + } + + /** + * Construct a new DeploymentException instance. + * + * @param message The detail message for this exception. + * @param throwable the root cause of the exception + */ + public DeploymentException( final String message, final Throwable throwable ) + { + super( message, throwable ); + } +} diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/TskDeployer.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/TskDeployer.java index d12e79e65..3a7d9cc99 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/TskDeployer.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/TskDeployer.java @@ -8,8 +8,7 @@ package org.apache.myrmidon.components.deployer; import java.net.URL; -import org.apache.avalon.framework.camelot.Deployer; -import org.apache.avalon.framework.camelot.DeploymentException; +import org.apache.avalon.framework.component.Component; /** * This class deploys a .tsk file into a registry. @@ -17,10 +16,20 @@ import org.apache.avalon.framework.camelot.DeploymentException; * @author Peter Donald */ public interface TskDeployer - extends Deployer + extends Component { String ROLE = "org.apache.myrmidon.components.deployer.TskDeployer"; + /** + * Deploy a resource indicate by url to location. + * + * @param location the location to deploy to + * @param url the url of deployment + * @exception DeploymentException if an error occurs + */ + void deploy( String location, URL url ) + throws DeploymentException; + void deployConverter( String name, String location, URL url ) throws DeploymentException; diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java index 8bb0fe78d..c7c49b591 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java @@ -7,15 +7,13 @@ */ package org.apache.myrmidon.components.embeddor; +import org.apache.avalon.excalibur.io.ExtensionFileFilter; import java.io.File; +import java.io.FilenameFilter; import org.apache.myrmidon.components.converter.MasterConverter; import org.apache.myrmidon.components.converter.ConverterRegistry; import org.apache.avalon.excalibur.io.FileUtil; import org.apache.avalon.framework.activity.Initializable; -import org.apache.avalon.framework.camelot.CamelotUtil; -import org.apache.avalon.framework.camelot.DefaultFactory; -import org.apache.avalon.framework.camelot.Deployer; -import org.apache.avalon.framework.camelot.Factory; import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.Composable; import org.apache.avalon.framework.component.DefaultComponentManager; @@ -26,6 +24,7 @@ import org.apache.myrmidon.api.JavaVersion; import org.apache.myrmidon.components.builder.ProjectBuilder; import org.apache.myrmidon.components.configurer.Configurer; import org.apache.myrmidon.components.deployer.TskDeployer; +import org.apache.myrmidon.components.deployer.DeploymentException; import org.apache.myrmidon.components.executor.Executor; import org.apache.myrmidon.components.manager.ProjectManager; import org.apache.myrmidon.components.type.TypeManager; @@ -119,7 +118,8 @@ public class MyrmidonEmbeddor public void start() throws Exception { - CamelotUtil.deployFromDirectory( m_deployer, m_taskLibDir, ".tsk" ); + final ExtensionFileFilter filter = new ExtensionFileFilter( ".tsk" ); + deployFromDirectory( m_deployer, m_taskLibDir, filter ); } public void stop() @@ -228,7 +228,7 @@ public class MyrmidonEmbeddor component = getParameter( ConverterRegistry.ROLE ); m_converterRegistry = (ConverterRegistry)createComponent( component, ConverterRegistry.class ); - component = getParameter( "org.apache.myrmidon.components.converter.MasterConverter" ); + component = getParameter( MasterConverter.ROLE ); m_converter = (MasterConverter)createComponent( component, MasterConverter.class ); component = getParameter( Configurer.ROLE ); @@ -422,4 +422,47 @@ public class MyrmidonEmbeddor " (" + component + ")" ); } } + + + private void deployFromDirectory( final TskDeployer deployer, + final File directory, + final FilenameFilter filter ) + throws DeploymentException + { + final File[] files = directory.listFiles( filter ); + + if( null != files ) + { + deployFiles( deployer, files ); + } + } + + private void deployFiles( final TskDeployer deployer, final File[] files ) + throws DeploymentException + { + for( int i = 0; i < files.length; i++ ) + { + final String filename = files[ i ].getName(); + + int index = filename.lastIndexOf( '.' ); + if( -1 == index ) index = filename.length(); + + final String name = filename.substring( 0, index ); + + try + { + final File file = files[ i ].getCanonicalFile(); + deployer.deploy( name, file.toURL() ); + } + catch( final DeploymentException de ) + { + throw de; + } + catch( final Exception e ) + { + throw new DeploymentException( "Unable to retrieve filename for file " + + files[ i ], e ); + } + } + } } diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/Main.java b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java similarity index 98% rename from proposal/myrmidon/src/java/org/apache/myrmidon/Main.java rename to proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java index 573603f9b..a42157b1b 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/Main.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java @@ -5,7 +5,7 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ -package org.apache.myrmidon; +package org.apache.myrmidon.frontends; import java.io.BufferedReader; import java.io.File; @@ -32,6 +32,7 @@ import org.apache.log.Hierarchy; import org.apache.log.LogTarget; import org.apache.log.Logger; import org.apache.log.Priority; +import org.apache.myrmidon.Constants; import org.apache.myrmidon.api.DefaultTaskContext; import org.apache.myrmidon.api.TaskContext; import org.apache.myrmidon.api.TaskException; @@ -50,7 +51,7 @@ import org.apache.myrmidon.listeners.ProjectListener; * * @author Peter Donald */ -public class Main +public class CLIMain extends AbstractLoggable { //defines for the Command Line options @@ -98,7 +99,7 @@ public class Main */ public static void main( final String[] args ) { - final Main main = new Main(); + final CLIMain main = new CLIMain(); try { main.execute( args ); } catch( final Throwable throwable ) @@ -225,8 +226,8 @@ public class Main case VERSION_OPT: System.out.println( Constants.BUILD_DESCRIPTION ); return false; case HOME_DIR_OPT: m_parameters.setParameter( "myrmidon.home", option.getArgument() ); break; - case TASKLIB_DIR_OPT: - m_parameters.setParameter( "myrmidon.lib.path", option.getArgument() ); + 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; @@ -323,7 +324,7 @@ public class Main { //actually do the build ... final TaskContext context = new DefaultTaskContext(); - + //Add CLI m_defines addToContext( context, m_defines ); diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java index 62fd43c55..9249376c4 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java @@ -45,7 +45,7 @@ public final class Main final URLClassLoader classLoader = new URLClassLoader( urls ); //load class and retrieve appropriate main method. - final Class clazz = classLoader.loadClass( "org.apache.myrmidon.Main" ); + final Class clazz = classLoader.loadClass( "org.apache.myrmidon.frontends.CLIMain" ); final Method method = clazz.getMethod( "main", new Class[] { args.getClass() } ); Thread.currentThread().setContextClassLoader( classLoader ); diff --git a/proposal/myrmidon/src/manifest/myrmidon-manifest.mf b/proposal/myrmidon/src/manifest/myrmidon-manifest.mf index 5bd286f4e..78fbb354d 100644 --- a/proposal/myrmidon/src/manifest/myrmidon-manifest.mf +++ b/proposal/myrmidon/src/manifest/myrmidon-manifest.mf @@ -1,4 +1,3 @@ Manifest-Version: 1.0 -Main-Class: org.apache.myrmidon.Main -Class-Path: avalonapi.jar +Main-Class: org.apache.myrmidon.frontends.CLIMain Created-By: Apache Ant Project \ No newline at end of file