Thanks for the suggestions guys.

Don't really want to bring in the might of plexus/commons libraries if I can help it for this one liner so what I'm doing is just calling Main directly - don't know why I didn't think
of it before:

            com.sun.tools.xjc.Driver.main(args);

I'm way off topic now though.

On 4 Oct 2005, at 11:20, Wendell Beckwith wrote:

Another thing to do especially since some devs keep steering people to
use commons-exec and then other devs say not to use it is to use the
command line execution functionality in plexus-utils.


1. Add the following dependency to your pom:

        <dependency>
            <groupId>plexus</groupId>
            <artifactId>plexus-utils</artifactId>
            <version>1.0.3</version>
        </dependency>


2. Createa utility method like the following:


    /**
     * @see org.apache.maven.plugin.Mojo#execute()
     */
    public static int execute(Commandline cl, Log log) throws
MojoExecutionException
    {
       try
        {
            if (log.isDebugEnabled())
            {
                log.debug("Command Line: " + cl);
            }
            StreamConsumer consumer = new MavenLogConsumer(log);
int exitCode = CommandLineUtils.executeCommandLine( cl, consumer,
                consumer );
            return exitCode;
        }
        catch (CommandLineException e)
        {
            throw new MojoExecutionException("command line error", e);
        }
    }

3. Create a StreamConsumer that will funnel output to your current
maven process:

public class MavenLogConsumer implements StreamConsumer
{
    private Log log;

    /**
     * @param log
     */
    public MavenLogConsumer(Log log)
    {
        this.log = log;
    }

    /**
* @see org.codehaus.plexus.util.cli.StreamConsumer#consumeLine (java.lang.String)
     */
    public void consumeLine(String line)
    {
        log.info(line);
    }
}

You should now be good to execute the jar command directly.

Wb


On 10/4/05, Orjan Austvold <[EMAIL PROTECTED]> wrote:

Hi,

The jar tool is located in the tools.jar archive. Try something like

sun.tools.jar.Main jarTool = new sun.tools.jar.Main(System.out,
System.err, "jar");
jarTool.run(new String[]{"cfm", "new-archive.jar", "myManifest.mf"});


Ørjan


Ashley Williams wrote:

Just to give a little more context I'm writing a plugin that simply
invokes "java -jar jaxb-xjc.jar <myschema>", hopefully specifying which
java vm to use, eg Java 5 or Java 4. Just a simple one liner  plugin
really.

On 3 Oct 2005, at 23:26, Ashley Williams wrote:


I'm writing a plugin that needs to call java -jar in the execute
method. Is there an api I should use as I don't wish to use the java
Runtime class to do this. I've had a look at the compiler  plugin
thinking that it might give me a clue (maybe by invoking javac), but
it just delegates to some CompilerManager class.

Thanks
AW

------------------------------------------------------------------- --
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





-------------------------------------------------------------------- -
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--
Ørjan Austvold - Senior Software Architect
www.colibria.com - putting the presence into messaging

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to