Hi,

Thanks a lot, Kenney, for your explanation and code snippet! This is
exactly what I was looking for! I have filled in the tiny missing
details in your sample code to build up a working example which you
can find below. Just in case anyone else is interested in it.

One thing I noticed is that the example should not be run from
within a directory containing a pom.xml file since, otherwise,
this project file is interpreted as being the parent model file!

Well, again, thanks a lot!

Regards,
  Ovidio


================================================================================

public class ProjectCreator {

  public static void main(String[] args) throws Exception {
    MavenEmbedder embedder = new MavenEmbedder();

    embedder.setClassLoader( Thread.currentThread().getContextClassLoader() );

    embedder.setLogger( new MavenEmbedderConsoleLogger() );

    embedder.start();

    Settings settings = embedder.buildSettings(
        embedder.getUserSettingsPath( null ),
        embedder.getGlobalSettingsPath(),
        false,
        false,
        false,
        Boolean.FALSE );

    Properties properties = new Properties();
    properties.put( "groupId", "net.sytes.meco" );
    properties.put( "artifactId", "new_project" );

    MavenExecutionRequest request = new DefaultMavenExecutionRequest()
      .setBasedir( new File( "/tmp" ) )
      .setGoals( Arrays.asList( new String[] { "archetype:create" } ) )
      .setLocalRepositoryPath( embedder.getLocalRepositoryPath( settings ) )
      .setSettings( settings )
      .setProperties( properties )
      .addEventMonitor(
          new DefaultEventMonitor(
              new ConsoleLogger( ConsoleLogger.LEVEL_DISABLED, "logger" ) ) );

    embedder.execute( request );
  }
}

================================================================================


Kenney Westerhof wrote:
> On Sat, 27 May 2006, Ovidio Mallo wrote:
>
> Hi,
>
> Well, currently running archetype:create seems the simplest way to me.
> The embedder is primarily meant to build projects, not to create them.
>
> You might want to take a look at the maven-cli project. Some plugins, like
> archetype, don't require an existing pom.xml.
>
> A sequence like this (more or less) should work for you:
>
> MavenEmbedder embedder = new MavenEmbedder();
>
> embedder.start();
>
> Settings settings = embedder.buildSettings(
>    embedder.getUserSettingsPath( null ),
>    embedder.getGlobalSettingsPath(),
>    false,
>    false,
>    false,
>    false );
>
> Properties properties = new Properties();
> // set archetype parameters in properties
>
> MavenExecutionRequest request = new DefaultMavenExecutionRequest()
>    .setBasedir(..)
>    .setGoals( Arrays.asList( new String[] { "archetype.create" } )
>    .setLocalRepositoryPath( embedder.getLocalRepositoryPath( settings )
>    .setSettings( settings )
>    .setProperties( properties );
>
> embedder.execute( request );
>
> .. and we don't set a pom file here.
>
> Good luck!
>
> -- Kenney
>
>
>
>>Hi everyone!
>>
>>I just wanted to ask whether there is a clean way to create a new maven
>>project using the MavenEmbedder API. It is of course possible to
>>execute the "archetype:create" goal but the API seems to always
>>require that you already pass in an existing project (at least
>>an existing pom.xml file) in order to execute any goal.
>>I think such a feature would be quite handy for other projects
>>such as the Maven2 Eclipse Plugin.
>>
>>Thanks in advance for any help!
>>
>>Regards,
>>   Ovidio
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>
>
> --
> Kenney Westerhof
> http://www.neonics.com
> GPG public key: http://www.gods.nl/~forge/kenneyw.key
>
> ---------------------------------------------------------------------
> 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