mirror of
https://github.com/apache/maven.git
synced 2025-02-09 11:35:24 +00:00
Partially working plugin processor.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@751938 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d6bd6de6c6
commit
243d2cd6f7
@ -11,6 +11,7 @@
|
|||||||
public class DependenciesProcessor
|
public class DependenciesProcessor
|
||||||
extends BaseProcessor
|
extends BaseProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
public void process( Object parent, Object child, Object target, boolean isChildMostSpecialized )
|
public void process( Object parent, Object child, Object target, boolean isChildMostSpecialized )
|
||||||
{
|
{
|
||||||
super.process( parent, child, target, isChildMostSpecialized );
|
super.process( parent, child, target, isChildMostSpecialized );
|
||||||
@ -21,7 +22,7 @@ public void process( Object parent, Object child, Object target, boolean isChild
|
|||||||
{
|
{
|
||||||
p = (List<Dependency>) parent;
|
p = (List<Dependency>) parent;
|
||||||
}
|
}
|
||||||
List<Dependency> dependencies = ( (Model) target ).getDependencies();
|
List<Dependency> dependencies = (List<Dependency>) target;
|
||||||
|
|
||||||
DependencyProcessor processor = new DependencyProcessor();
|
DependencyProcessor processor = new DependencyProcessor();
|
||||||
if ( ( p == null || p.isEmpty() ) && !c.isEmpty() )
|
if ( ( p == null || p.isEmpty() ) && !c.isEmpty() )
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
package org.apache.maven.project.processor;
|
package org.apache.maven.project.processor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.maven.model.Build;
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.DependencyManagement;
|
||||||
import org.apache.maven.model.Model;
|
import org.apache.maven.model.Model;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -73,11 +78,25 @@ else if ( p != null )
|
|||||||
t.setInceptionYear( p.getInceptionYear() );
|
t.setInceptionYear( p.getInceptionYear() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<Dependency> deps = new ArrayList<Dependency>();
|
||||||
DependenciesProcessor dependenciesProcessor = new DependenciesProcessor();
|
DependenciesProcessor dependenciesProcessor = new DependenciesProcessor();
|
||||||
dependenciesProcessor.process( (p != null) ? p.getDependencies() : null, c.getDependencies(), t, isChildMostSpecialized );
|
dependenciesProcessor.process( (p != null) ? p.getDependencies() : null, c.getDependencies(), deps, isChildMostSpecialized );
|
||||||
|
|
||||||
|
if(deps.size() > 0)
|
||||||
|
{
|
||||||
|
t.getDependencies().addAll( deps );
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Dependency> mngDeps = new ArrayList<Dependency>();
|
||||||
dependenciesProcessor.process( (p != null && p.getDependencyManagement() != null) ? p.getDependencyManagement().getDependencies(): null,
|
dependenciesProcessor.process( (p != null && p.getDependencyManagement() != null) ? p.getDependencyManagement().getDependencies(): null,
|
||||||
(c.getDependencyManagement() != null) ? c.getDependencyManagement().getDependencies(): null, t, isChildMostSpecialized );
|
(c.getDependencyManagement() != null) ? c.getDependencyManagement().getDependencies(): null, mngDeps, isChildMostSpecialized );
|
||||||
|
if(mngDeps.size() > 0)
|
||||||
|
{
|
||||||
|
if(t.getDependencyManagement() == null)
|
||||||
|
{
|
||||||
|
t.setDependencyManagement( new DependencyManagement() );
|
||||||
|
}
|
||||||
|
t.getDependencyManagement().getDependencies().addAll( mngDeps );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,87 @@
|
|||||||
|
package org.apache.maven.project.processor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.Plugin;
|
||||||
|
|
||||||
|
public class PluginProcessor
|
||||||
|
extends BaseProcessor
|
||||||
|
{
|
||||||
|
public void process( Object parent, Object child, Object target, boolean isChildMostSpecialized )
|
||||||
|
{
|
||||||
|
super.process( parent, child, target, isChildMostSpecialized );
|
||||||
|
List<Plugin> t = (List<Plugin>) target;
|
||||||
|
|
||||||
|
if ( parent == null && child == null )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if ( parent == null && child != null )
|
||||||
|
{
|
||||||
|
Plugin targetPlugin = new Plugin();
|
||||||
|
copy( (Plugin) child, targetPlugin );
|
||||||
|
t.add( targetPlugin );
|
||||||
|
}
|
||||||
|
else if ( parent != null && child == null )
|
||||||
|
{
|
||||||
|
Plugin targetPlugin = new Plugin();
|
||||||
|
copy( (Plugin) parent, targetPlugin );
|
||||||
|
t.add( targetPlugin );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// JOIN
|
||||||
|
{
|
||||||
|
Plugin targetDependency = new Plugin();
|
||||||
|
copy( (Plugin) child, targetDependency );
|
||||||
|
copy( (Plugin) parent, targetDependency );
|
||||||
|
t.add( targetDependency );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void copy(Plugin p1, Plugin p2)
|
||||||
|
{
|
||||||
|
if(p2.getArtifactId() == null)
|
||||||
|
{
|
||||||
|
p2.setArtifactId( p1.getArtifactId() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(p2.getGroupId() == null)
|
||||||
|
{
|
||||||
|
p2.setGroupId( p1.getGroupId() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(p2.getInherited() == null)
|
||||||
|
{
|
||||||
|
p2.setInherited( p1.getInherited() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(p2.getVersion() == null)
|
||||||
|
{
|
||||||
|
p2.setVersion( p1.getVersion() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(p2.getDependencies().isEmpty())
|
||||||
|
{
|
||||||
|
DependenciesProcessor proc = new DependenciesProcessor();
|
||||||
|
proc.process( new ArrayList<Dependency>(), new ArrayList<Dependency>(p1.getDependencies()), p2.getDependencies(), false );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DependenciesProcessor proc = new DependenciesProcessor();
|
||||||
|
proc.process( new ArrayList<Dependency>(p1.getDependencies()), new ArrayList<Dependency>(), p2.getDependencies(), false );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// p2.setConfiguration( configuration ) merge nodes
|
||||||
|
//Goals
|
||||||
|
//Executions
|
||||||
|
p2.setExtensions(p1.isExtensions());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package org.apache.maven.project.processor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
import org.apache.maven.model.Plugin;
|
||||||
|
|
||||||
|
public class PluginsProcessor
|
||||||
|
extends BaseProcessor
|
||||||
|
{
|
||||||
|
public void process( Object parent, Object child, Object target, boolean isChildMostSpecialized )
|
||||||
|
{
|
||||||
|
super.process( parent, child, target, isChildMostSpecialized );
|
||||||
|
List<Plugin> c = (child != null) ? (List<Plugin>) child : new ArrayList<Plugin>() ;
|
||||||
|
List<Plugin> p = null;
|
||||||
|
|
||||||
|
if ( parent != null )
|
||||||
|
{
|
||||||
|
p = (List<Plugin>) parent;
|
||||||
|
}
|
||||||
|
Model t = (Model) target;
|
||||||
|
List<Plugin> plugins = t.getBuild().getPlugins();
|
||||||
|
|
||||||
|
PluginProcessor processor = new PluginProcessor();
|
||||||
|
if ( ( p == null || p.isEmpty() ) && !c.isEmpty() )
|
||||||
|
{
|
||||||
|
for ( Plugin plugin : c )
|
||||||
|
{
|
||||||
|
processor.process( null, plugin, plugins, isChildMostSpecialized );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( !c.isEmpty() )
|
||||||
|
{
|
||||||
|
List<Plugin> parentDependencies = new ArrayList<Plugin>();
|
||||||
|
for ( Plugin d1 : c)
|
||||||
|
{
|
||||||
|
for ( Plugin d2 : p)
|
||||||
|
{
|
||||||
|
if ( match( d1, d2 ) )
|
||||||
|
{
|
||||||
|
processor.process( d2, d1, plugins, isChildMostSpecialized );// JOIN
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
processor.process( null, d1, plugins, isChildMostSpecialized );
|
||||||
|
parentDependencies.add( d2 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( Plugin d2 : parentDependencies )
|
||||||
|
{
|
||||||
|
processor.process( d2, null, plugins, isChildMostSpecialized );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( p != null)
|
||||||
|
{
|
||||||
|
for ( Plugin d2 : p )
|
||||||
|
{
|
||||||
|
processor.process( d2, null, plugins, isChildMostSpecialized );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean match( Plugin d1, Plugin d2 )
|
||||||
|
{
|
||||||
|
if ( getId( d1 ).equals( getId( d2 ) ) )
|
||||||
|
{
|
||||||
|
return ( d1.getVersion() == null ? "" : d1.getVersion() ).equals( d2.getVersion() == null ? ""
|
||||||
|
: d2.getVersion() );
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getId( Plugin d )
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append( d.getGroupId() ).append( ":" ).append( d.getArtifactId() ).append( ":" );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -19,13 +19,13 @@ public void testCopyChild()
|
|||||||
|
|
||||||
List<Dependency> child = Arrays.asList( dependency );
|
List<Dependency> child = Arrays.asList( dependency );
|
||||||
|
|
||||||
Model target = new Model();
|
List<Dependency> target = new ArrayList<Dependency>();
|
||||||
|
|
||||||
DependenciesProcessor processor = new DependenciesProcessor();
|
DependenciesProcessor processor = new DependenciesProcessor();
|
||||||
processor.process( null, child, target, false );
|
processor.process( null, child, target, false );
|
||||||
|
|
||||||
assertEquals( 1, target.getDependencies().size() );
|
assertEquals( 1, target.size() );
|
||||||
assertEquals( "aid", target.getDependencies().get( 0 ).getArtifactId() );
|
assertEquals( "aid", target.get( 0 ).getArtifactId() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testParentCopy()
|
public void testParentCopy()
|
||||||
@ -37,13 +37,13 @@ public void testParentCopy()
|
|||||||
|
|
||||||
List<Dependency> parent = Arrays.asList( dependency );
|
List<Dependency> parent = Arrays.asList( dependency );
|
||||||
|
|
||||||
Model target = new Model();
|
List<Dependency> target = new ArrayList<Dependency>();
|
||||||
|
|
||||||
DependenciesProcessor processor = new DependenciesProcessor();
|
DependenciesProcessor processor = new DependenciesProcessor();
|
||||||
processor.process( parent, child, target, false );
|
processor.process( parent, child, target, false );
|
||||||
|
|
||||||
assertEquals( 1, target.getDependencies().size() );
|
assertEquals( 1, target.size() );
|
||||||
assertEquals( "aid", target.getDependencies().get( 0 ).getArtifactId() );
|
assertEquals( "aid", target.get( 0 ).getArtifactId() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDependencyOrder()
|
public void testDependencyOrder()
|
||||||
@ -56,14 +56,14 @@ public void testDependencyOrder()
|
|||||||
dependency.setArtifactId( "aid" );
|
dependency.setArtifactId( "aid" );
|
||||||
List<Dependency> parent = Arrays.asList( dependency );
|
List<Dependency> parent = Arrays.asList( dependency );
|
||||||
|
|
||||||
Model target = new Model();
|
List<Dependency> target = new ArrayList<Dependency>();
|
||||||
|
|
||||||
DependenciesProcessor processor = new DependenciesProcessor();
|
DependenciesProcessor processor = new DependenciesProcessor();
|
||||||
processor.process( parent, child, target, false );
|
processor.process( parent, child, target, false );
|
||||||
|
|
||||||
assertEquals( 2, target.getDependencies().size() );
|
assertEquals( 2, target.size() );
|
||||||
assertEquals( "aid1", target.getDependencies().get( 0 ).getArtifactId() );
|
assertEquals( "aid1", target.get( 0 ).getArtifactId() );
|
||||||
assertEquals( "aid", target.getDependencies().get( 1 ).getArtifactId() );
|
assertEquals( "aid", target.get( 1 ).getArtifactId() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testJoin_NullVersion()
|
public void testJoin_NullVersion()
|
||||||
@ -81,13 +81,13 @@ public void testJoin_NullVersion()
|
|||||||
|
|
||||||
List<Dependency> parent= Arrays.asList( dependency );
|
List<Dependency> parent= Arrays.asList( dependency );
|
||||||
|
|
||||||
Model target = new Model();
|
List<Dependency> target = new ArrayList<Dependency>();
|
||||||
|
|
||||||
DependenciesProcessor processor = new DependenciesProcessor();
|
DependenciesProcessor processor = new DependenciesProcessor();
|
||||||
processor.process( parent, child, target, false );
|
processor.process( parent, child, target, false );
|
||||||
|
|
||||||
assertEquals( 1, target.getDependencies().size() );
|
assertEquals( 1, target.size() );
|
||||||
assertEquals( "sp", target.getDependencies().get( 0 ).getSystemPath() );
|
assertEquals( "sp", target.get( 0 ).getSystemPath() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testJoin_DefaultType()
|
public void testJoin_DefaultType()
|
||||||
@ -107,13 +107,13 @@ public void testJoin_DefaultType()
|
|||||||
|
|
||||||
List<Dependency> parent = Arrays.asList( dependency );
|
List<Dependency> parent = Arrays.asList( dependency );
|
||||||
|
|
||||||
Model target = new Model();
|
List<Dependency> target = new ArrayList<Dependency>();
|
||||||
|
|
||||||
DependenciesProcessor processor = new DependenciesProcessor();
|
DependenciesProcessor processor = new DependenciesProcessor();
|
||||||
processor.process( parent, child, target, false );
|
processor.process( parent, child, target, false );
|
||||||
|
|
||||||
assertEquals( 1, target.getDependencies().size() );
|
assertEquals( 1, target.size() );
|
||||||
assertEquals( "sp", target.getDependencies().get( 0 ).getSystemPath() );
|
assertEquals( "sp", target.get( 0 ).getSystemPath() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testJoin_DifferentClassifiers()
|
public void testJoin_DifferentClassifiers()
|
||||||
@ -134,12 +134,12 @@ public void testJoin_DifferentClassifiers()
|
|||||||
|
|
||||||
List<Dependency> parent = Arrays.asList( dependency );
|
List<Dependency> parent = Arrays.asList( dependency );
|
||||||
|
|
||||||
Model target = new Model();
|
List<Dependency> target = new ArrayList<Dependency>();
|
||||||
|
|
||||||
DependenciesProcessor processor = new DependenciesProcessor();
|
DependenciesProcessor processor = new DependenciesProcessor();
|
||||||
processor.process( parent, child, target, false );
|
processor.process( parent, child, target, false );
|
||||||
|
|
||||||
assertEquals( 2, target.getDependencies().size() );
|
assertEquals( 2, target.size() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testJoin_DifferentVersions()
|
public void testJoin_DifferentVersions()
|
||||||
@ -158,11 +158,11 @@ public void testJoin_DifferentVersions()
|
|||||||
|
|
||||||
List<Dependency> parent = Arrays.asList( dependency );
|
List<Dependency> parent = Arrays.asList( dependency );
|
||||||
|
|
||||||
Model target = new Model();
|
List<Dependency> target = new ArrayList<Dependency>();
|
||||||
|
|
||||||
DependenciesProcessor processor = new DependenciesProcessor();
|
DependenciesProcessor processor = new DependenciesProcessor();
|
||||||
processor.process( parent, child, target, false );
|
processor.process( parent, child, target, false );
|
||||||
|
|
||||||
assertEquals( 2, target.getDependencies().size() );
|
assertEquals( 2, target.size() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.DependencyManagement;
|
||||||
import org.apache.maven.model.Model;
|
import org.apache.maven.model.Model;
|
||||||
import org.apache.maven.model.Parent;
|
import org.apache.maven.model.Parent;
|
||||||
|
|
||||||
@ -156,4 +158,28 @@ public void testInceptionYearFromParent()
|
|||||||
parentModel.setInceptionYear( "2001" );
|
parentModel.setInceptionYear( "2001" );
|
||||||
assertEquals( "2000", targetModel.getInceptionYear() );
|
assertEquals( "2000", targetModel.getInceptionYear() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testDependencyManagementChildCopy()
|
||||||
|
{
|
||||||
|
Model target= new Model();
|
||||||
|
|
||||||
|
Model child = new Model();
|
||||||
|
|
||||||
|
Dependency dependency = new Dependency();
|
||||||
|
dependency.setArtifactId( "aid" );
|
||||||
|
|
||||||
|
DependencyManagement mng = new DependencyManagement();
|
||||||
|
mng.addDependency( dependency );
|
||||||
|
|
||||||
|
child.setDependencyManagement( mng );
|
||||||
|
|
||||||
|
ModelProcessor mp = new ModelProcessor( new ArrayList<Processor>() );
|
||||||
|
mp.process( null, child, target, false );
|
||||||
|
|
||||||
|
assertNotNull(target.getDependencyManagement());
|
||||||
|
|
||||||
|
assertEquals(1, target.getDependencyManagement().getDependencies().size());
|
||||||
|
assertEquals("aid", target.getDependencyManagement().getDependencies().get( 0 ).getArtifactId());
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
package org.apache.maven.project.processor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.Plugin;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
public class PluginProcessorTest
|
||||||
|
extends TestCase
|
||||||
|
{
|
||||||
|
public void testPluginDependencyChildCopy_DependencyGroupId()
|
||||||
|
{
|
||||||
|
Dependency dependency = new Dependency();
|
||||||
|
dependency.setGroupId( "gid" );
|
||||||
|
|
||||||
|
List<Plugin> target = new ArrayList<Plugin>();
|
||||||
|
Plugin child = new Plugin();
|
||||||
|
child.addDependency( dependency );
|
||||||
|
|
||||||
|
PluginProcessor proc = new PluginProcessor();
|
||||||
|
proc.process( null, child, target, false );
|
||||||
|
|
||||||
|
assertEquals(1, target.size());
|
||||||
|
assertEquals(1, target.get( 0 ).getDependencies().size());
|
||||||
|
assertEquals("gid", target.get( 0 ).getDependencies().get( 0 ).getGroupId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testPluginDependencyJoin()
|
||||||
|
{
|
||||||
|
Dependency dependency = new Dependency();
|
||||||
|
dependency.setGroupId( "gid" );
|
||||||
|
|
||||||
|
List<Plugin> target = new ArrayList<Plugin>();
|
||||||
|
|
||||||
|
Plugin child = new Plugin();
|
||||||
|
child.setArtifactId( "aid" );
|
||||||
|
child.setGroupId( "gid" );
|
||||||
|
child.setVersion( "1.0" );
|
||||||
|
child.addDependency( dependency );
|
||||||
|
|
||||||
|
Plugin parent = new Plugin();
|
||||||
|
parent.setGroupId( "gid" );
|
||||||
|
parent.setArtifactId( "aid" );
|
||||||
|
parent.setVersion( "1.0" );
|
||||||
|
|
||||||
|
Dependency dependency1 = new Dependency();
|
||||||
|
dependency1.setGroupId( "gid1" );
|
||||||
|
parent.addDependency( dependency1 );
|
||||||
|
|
||||||
|
PluginProcessor proc = new PluginProcessor();
|
||||||
|
proc.process( parent, child, target, false );
|
||||||
|
|
||||||
|
assertEquals(1, target.size());
|
||||||
|
assertEquals(2, target.get( 0 ).getDependencies().size());
|
||||||
|
assertEquals("gid", target.get( 0 ).getDependencies().get( 0 ).getGroupId());
|
||||||
|
assertEquals("gid1", target.get( 0 ).getDependencies().get( 1 ).getGroupId());
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user