blob: 3ad635ad2d8d05d600439175a5f44f26fb0535e6 [file] [log] [blame]
/*
* Copyright (c) 2006 Your Corporation. All Rights Reserved.
*/
package org.apache.maven.plugin.archetype;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.archetype.Archetype;
import org.apache.maven.archetype.ArchetypeNotFoundException;
import org.apache.maven.archetype.ArchetypeDescriptorException;
import org.apache.maven.archetype.ArchetypeTemplateProcessingException;
import org.apache.maven.archetype.ArchetypeCreator;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.codehaus.plexus.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Properties;
import java.io.File;
import java.io.FileInputStream;
/**
* Builds archetype containers based from an existing Maven project (currently
* under development).
*
* @goal create-from-project
* @description Create an archetype from an existing Maven project.
* @requiresProject true
*/
public class CreateArchetypeFromProjectMojo
extends AbstractMojo
{
/**
* The Maven Project to be used as the basis for the creating of the archetype.
*
* @parameter expression="${project}"
* @required
*/
private MavenProject project;
/**
* Maven's local repository.
*
* @parameter expression="${localRepository}"
* @required
*/
private ArtifactRepository localRepository;
/**
* Output build directory.
*
* @parameter expression="${targetDirectory}" default-value="${project.build.directory}"
* @required
*/
private File targetDirectory;
/**
* Maven ArchetypeCreator
*
* @component
*/
private ArchetypeCreator archetypeCreator;
/**
* Maven ProjectHelper
*
* @component
*/
private MavenProjectHelper projectHelper;
/**
* Contains Archetype Properties.
*
* @parameter expression="${archetypeProperties}" default-value="${basedir}/src/main/archetype/archetype.properties"
* @required
*/
private File archetypeProperties;
public void execute()
throws MojoExecutionException
{
try
{
Properties p = new Properties();
p.load( new FileInputStream( archetypeProperties ) );
File archetypeJar = archetypeCreator.createArchetype( project, localRepository, targetDirectory, p );
projectHelper.attachArtifact( project, "jar", "archetype", archetypeJar );
}
catch ( Exception e )
{
throw new MojoExecutionException( "Cannot create archetype from this project.", e );
}
}
}