blob: d5c9990f34031030d5a369671023d04bfd4dd072 [file] [log] [blame]
package org.apache.maven.plugin.assembly.stubs;
/*
* Copyright 2001-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Build;
import org.apache.maven.model.Model;
import org.apache.maven.model.Reporting;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Properties;
import java.util.Set;
/**
* @author Edwin Punzalan
*/
public class ReactorMavenProjectStub
extends MavenProjectStub
{
public static List reactorProjects = new ArrayList();
private MavenProject parent;
private Model model;
private File basedir;
public ReactorMavenProjectStub()
{
this( "jar" );
}
public ReactorMavenProjectStub( String packaging )
{
super();
reactorProjects.add( this );
setGroupId( "assembly" );
setArtifactId( "reactor-project-" + reactorProjects.size() );
setVersion( "1.0" );
setPackaging( packaging );
setArtifact( new ArtifactStub( getGroupId(), getArtifactId(),
getVersion(), getPackaging(), Artifact.SCOPE_COMPILE ) );
}
public String getId()
{
return getGroupId() + ":" + getArtifactId() + ":" + getVersion() + ":" + getPackaging();
}
public Set getArtifacts()
{
Set artifacts = new HashSet();
artifacts.add( new ArtifactStub( "assembly", "reactor-dependency", "1.0", "jar", Artifact.SCOPE_COMPILE ) );
return artifacts;
}
public File getBasedir()
{
File basedir = super.getBasedir();
if ( parent != null )
{
basedir = parent.getBasedir();
}
return new File( basedir, getArtifactId() );
}
public Reporting getReporting()
{
return model.getReporting();
}
public Model getModel()
{
if ( model == null )
{
model = new Model();
model.setGroupId( getGroupId() );
model.setArtifactId( getArtifactId() );
model.setVersion( getVersion() );
model.setPackaging( getPackaging() );
model.setProperties( new Properties() );
Build build = new Build();
build.setFinalName( getArtifactId() + "-" + getVersion() + "." + getPackaging() );
if ( parent != null )
{
build.setDirectory( parent.getBasedir().getAbsolutePath() + "/" + getArtifactId() + "/target" );
FileUtils.mkdir( build.getDirectory() );
build.setOutputDirectory( parent.getBasedir().getAbsolutePath() + "/" +
getArtifactId() + "/target/classes" );
FileUtils.mkdir( build.getOutputDirectory() );
build.setTestOutputDirectory( parent.getBasedir().getAbsolutePath() + "/" +
getArtifactId() + "/target/test-classes" );
FileUtils.mkdir( build.getTestOutputDirectory() );
Reporting reporting = new Reporting();
reporting.setOutputDirectory( parent.getBasedir().getAbsolutePath() + "/" +
getArtifactId() + "/target/site" );
FileUtils.mkdir( reporting.getOutputDirectory() );
model.setReporting( reporting );
}
model.setBuild( build );
}
return model;
}
public Build getBuild()
{
return getModel().getBuild();
}
public void setParent( MavenProject parent )
{
this.parent = parent;
}
public MavenProject getParent()
{
return parent;
}
}