mirror of
https://github.com/apache/maven.git
synced 2025-02-08 02:59:22 +00:00
o Added dependencyDefaults section to POM.
The nested <dependencyDefault> element closely mirrors the <dependency> element specification. It provides the ability to set url, artifact, properties, version for a dependency that matches on {groupId, artifactId, type}. Url, artifact, and version will only override the dependency's values if the dependency doesn't provide the value, and (in the case of url and artifact) the dependency doesn't provide a version (url and artifact are assumed to be version-specific). Properties will only be overwritten, and only in the case where the dependency doesn't specify them. Dependencies are validated after merging with defaults, since version is not required on either <dependency> or <dependencyDefault> but is required between the two. o Added component interface/default impl for injecting project defaults. o Added unit and integration tests. git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163323 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a404ffd7d7
commit
e687cfed61
@ -37,6 +37,8 @@ it0010: Since the artifact resolution does not use the project builder, we must
|
|||||||
will check this, by depending on classworlds, which is a dependency of
|
will check this, by depending on classworlds, which is a dependency of
|
||||||
maven-component, which is the parent of maven-plugin, which is an
|
maven-component, which is the parent of maven-plugin, which is an
|
||||||
explicit dependency of this test.
|
explicit dependency of this test.
|
||||||
|
|
||||||
|
it0011: Test specification of dependency versions via <dependencyDefaults/>.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -9,3 +9,4 @@ it0007
|
|||||||
it0008
|
it0008
|
||||||
it0009
|
it0009
|
||||||
it0010
|
it0010
|
||||||
|
it0011
|
||||||
|
10
maven-core-it/it0011/.cvsignore
Normal file
10
maven-core-it/it0011/.cvsignore
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
*~
|
||||||
|
*.log
|
||||||
|
target
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
dist
|
||||||
|
target
|
||||||
|
.classpath
|
||||||
|
.project
|
||||||
|
log.txt
|
1
maven-core-it/it0011/expected-results.txt
Normal file
1
maven-core-it/it0011/expected-results.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
target/classes/org/apache/maven/it0011/PersonFinder.class
|
1
maven-core-it/it0011/goals.txt
Normal file
1
maven-core-it/it0011/goals.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
compiler:compile
|
30
maven-core-it/it0011/pom.xml
Normal file
30
maven-core-it/it0011/pom.xml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<project>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>maven</groupId>
|
||||||
|
<artifactId>maven-core-it0011</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>maven</groupId>
|
||||||
|
<artifactId>maven-plugin</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<dependencyDefaults>
|
||||||
|
<dependencyDefault>
|
||||||
|
<groupId>maven</groupId>
|
||||||
|
<artifactId>maven-plugin</artifactId>
|
||||||
|
<version>2.0-SNAPSHOT</version>
|
||||||
|
</dependencyDefault>
|
||||||
|
<dependencyDefault>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
</dependencyDefault>
|
||||||
|
</dependencyDefaults>
|
||||||
|
|
||||||
|
</project>
|
1
maven-core-it/it0011/prebuild-hook.txt
Normal file
1
maven-core-it/it0011/prebuild-hook.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
rm ${localRepository}/maven/plugins/maven-core-it-plugin-1.0-SNAPSHOT.jar
|
@ -0,0 +1,8 @@
|
|||||||
|
package org.apache.maven.it0011;
|
||||||
|
|
||||||
|
import org.codehaus.classworlds.ClassRealm;
|
||||||
|
|
||||||
|
public class PersonFinder
|
||||||
|
{
|
||||||
|
private ClassRealm classRealm;
|
||||||
|
}
|
@ -70,6 +70,8 @@ public class DefaultMavenProjectBuilder
|
|||||||
private MavenXpp3Reader modelReader;
|
private MavenXpp3Reader modelReader;
|
||||||
|
|
||||||
private PathTranslator pathTranslator;
|
private PathTranslator pathTranslator;
|
||||||
|
|
||||||
|
private ProjectDefaultsInjector projectDefaultsInjector;
|
||||||
|
|
||||||
public void initialize()
|
public void initialize()
|
||||||
throws Exception
|
throws Exception
|
||||||
@ -111,6 +113,8 @@ public MavenProject build( File projectDescriptor, ArtifactRepository localRepos
|
|||||||
|
|
||||||
previous = current;
|
previous = current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
projectDefaultsInjector.injectDefaults(project);
|
||||||
|
|
||||||
project.setLocalRepository( localRepository );
|
project.setLocalRepository( localRepository );
|
||||||
|
|
||||||
|
@ -0,0 +1,91 @@
|
|||||||
|
// TODO Attach license header here.
|
||||||
|
package org.apache.maven.project;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.DependencyDefault;
|
||||||
|
import org.codehaus.plexus.util.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*
|
||||||
|
* Created on Feb 1, 2005
|
||||||
|
*/
|
||||||
|
public class DefaultProjectDefaultsInjector implements ProjectDefaultsInjector
|
||||||
|
{
|
||||||
|
|
||||||
|
public void injectDefaults(MavenProject project)
|
||||||
|
{
|
||||||
|
injectDependencyDefaults(project.getDependencies(), project.getDependencyDefaults());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Added: Feb 1, 2005 by jdcasey
|
||||||
|
*/
|
||||||
|
private void injectDependencyDefaults( List dependencies, List dependencyDefaults )
|
||||||
|
{
|
||||||
|
// a given project's dependencies should be smaller than the group-defined defaults set...
|
||||||
|
// in other words, the project's deps will probably be a subset of those specified in defaults.
|
||||||
|
Map depsMap = new TreeMap();
|
||||||
|
for ( Iterator it = dependencies.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
Dependency dep = (Dependency) it.next();
|
||||||
|
depsMap.put(dep.getGroupId() + ":" + dep.getArtifactId() + ":" + dep.getType(), dep);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( Iterator it = dependencyDefaults.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
DependencyDefault depdef = (DependencyDefault) it.next();
|
||||||
|
String key = depdef.getGroupId() + ":" + depdef.getArtifactId() + ":" + depdef.getType();
|
||||||
|
|
||||||
|
Dependency dep = (Dependency) depsMap.get(key);
|
||||||
|
if(dep != null)
|
||||||
|
{
|
||||||
|
mergeWithDefaults(dep, depdef);
|
||||||
|
validateDependency(dep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Added: Feb 1, 2005 by jdcasey
|
||||||
|
*/
|
||||||
|
private void mergeWithDefaults( Dependency dep, DependencyDefault depdef )
|
||||||
|
{
|
||||||
|
if(dep.getVersion() == null && depdef.getVersion() != null)
|
||||||
|
{
|
||||||
|
dep.setVersion(depdef.getVersion());
|
||||||
|
|
||||||
|
if(dep.getArtifact() == null && depdef.getArtifact() != null)
|
||||||
|
{
|
||||||
|
dep.setArtifact(depdef.getArtifact());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dep.getUrl() == null && depdef.getUrl() != null)
|
||||||
|
{
|
||||||
|
dep.setUrl(depdef.getUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Properties depProps = dep.getProperties();
|
||||||
|
Properties depdefProps = depdef.getProperties();
|
||||||
|
if((depProps == null || depProps.isEmpty()) && depdefProps != null)
|
||||||
|
{
|
||||||
|
dep.setProperties(depdefProps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Added: Feb 1, 2005 by jdcasey
|
||||||
|
*/
|
||||||
|
private void validateDependency( Dependency dep )
|
||||||
|
{
|
||||||
|
if(StringUtils.isEmpty(dep.getVersion()))
|
||||||
|
{
|
||||||
|
throw new IllegalStateException("Dependency version is null for: " + dep.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -118,6 +118,11 @@ public List getDependencies()
|
|||||||
{
|
{
|
||||||
return model.getDependencies();
|
return model.getDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List getDependencyDefaults()
|
||||||
|
{
|
||||||
|
return model.getDependencyDefaults();
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Test and compile sourceroots.
|
// Test and compile sourceroots.
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
// TODO Attach license header here.
|
||||||
|
package org.apache.maven.project;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*
|
||||||
|
* Created on Feb 1, 2005
|
||||||
|
*/
|
||||||
|
public interface ProjectDefaultsInjector
|
||||||
|
{
|
||||||
|
public static final String ROLE = DefaultProjectDefaultsInjector.class.getName();
|
||||||
|
|
||||||
|
void injectDefaults( MavenProject project );
|
||||||
|
}
|
@ -134,6 +134,15 @@
|
|||||||
</lifecycle-phases>
|
</lifecycle-phases>
|
||||||
</configuration>
|
</configuration>
|
||||||
</component>
|
</component>
|
||||||
|
<!--
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
-->
|
||||||
|
<component>
|
||||||
|
<role>org.apache.maven.project.ProjectDefaultsInjector</role>
|
||||||
|
<implementation>org.apache.maven.project.DefaultProjectDefaultsInjector</implementation>
|
||||||
|
</component>
|
||||||
<!--
|
<!--
|
||||||
|
|
|
|
||||||
|
|
|
|
||||||
@ -143,6 +152,9 @@
|
|||||||
<role>org.apache.maven.project.MavenProjectBuilder</role>
|
<role>org.apache.maven.project.MavenProjectBuilder</role>
|
||||||
<implementation>org.apache.maven.project.DefaultMavenProjectBuilder</implementation>
|
<implementation>org.apache.maven.project.DefaultMavenProjectBuilder</implementation>
|
||||||
<requirements>
|
<requirements>
|
||||||
|
<requirement>
|
||||||
|
<role>org.apache.maven.project.ProjectDefaultsInjector</role>
|
||||||
|
</requirement>
|
||||||
<requirement>
|
<requirement>
|
||||||
<role>org.apache.maven.project.inheritance.ModelInheritanceAssembler</role>
|
<role>org.apache.maven.project.inheritance.ModelInheritanceAssembler</role>
|
||||||
</requirement>
|
</requirement>
|
||||||
|
@ -0,0 +1,219 @@
|
|||||||
|
// TODO Attach license header here.
|
||||||
|
package org.apache.maven.project;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.DependencyDefault;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*
|
||||||
|
* Created on Feb 1, 2005
|
||||||
|
*/
|
||||||
|
public class DefaultProjectDefaultsInjectorTest
|
||||||
|
extends TestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
public void testShouldConstructWithNoParams()
|
||||||
|
{
|
||||||
|
new DefaultProjectDefaultsInjector();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldSucceedInMergingDependencyWithDependencyDefault()
|
||||||
|
{
|
||||||
|
Model model = new Model();
|
||||||
|
|
||||||
|
Dependency dep = new Dependency();
|
||||||
|
dep.setGroupId("myGroup");
|
||||||
|
dep.setArtifactId("myArtifact");
|
||||||
|
|
||||||
|
model.addDependency(dep);
|
||||||
|
|
||||||
|
DependencyDefault def = new DependencyDefault();
|
||||||
|
def.setGroupId(dep.getGroupId());
|
||||||
|
def.setArtifactId(dep.getArtifactId());
|
||||||
|
def.setVersion("1.0.1");
|
||||||
|
|
||||||
|
model.addDependencyDefault(def);
|
||||||
|
|
||||||
|
MavenProject project = new MavenProject(model);
|
||||||
|
|
||||||
|
new DefaultProjectDefaultsInjector().injectDefaults(project);
|
||||||
|
|
||||||
|
List deps = project.getDependencies();
|
||||||
|
assertEquals(1, deps.size());
|
||||||
|
|
||||||
|
Dependency result = (Dependency)deps.get(0);
|
||||||
|
assertEquals(def.getVersion(), result.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldMergeDefaultUrlAndArtifactWhenDependencyDoesntSupplyVersion()
|
||||||
|
{
|
||||||
|
Model model = new Model();
|
||||||
|
|
||||||
|
Dependency dep = new Dependency();
|
||||||
|
dep.setGroupId("myGroup");
|
||||||
|
dep.setArtifactId("myArtifact");
|
||||||
|
|
||||||
|
model.addDependency(dep);
|
||||||
|
|
||||||
|
DependencyDefault def = new DependencyDefault();
|
||||||
|
def.setGroupId(dep.getGroupId());
|
||||||
|
def.setArtifactId(dep.getArtifactId());
|
||||||
|
def.setArtifact("myArtifact");
|
||||||
|
def.setUrl("http://www.google.com");
|
||||||
|
def.setVersion("1.0.1");
|
||||||
|
|
||||||
|
model.addDependencyDefault(def);
|
||||||
|
|
||||||
|
MavenProject project = new MavenProject(model);
|
||||||
|
|
||||||
|
new DefaultProjectDefaultsInjector().injectDefaults(project);
|
||||||
|
|
||||||
|
List deps = project.getDependencies();
|
||||||
|
assertEquals(1, deps.size());
|
||||||
|
|
||||||
|
Dependency result = (Dependency)deps.get(0);
|
||||||
|
assertEquals(def.getVersion(), result.getVersion());
|
||||||
|
assertEquals(def.getArtifact(), result.getArtifact());
|
||||||
|
assertEquals(def.getUrl(), result.getUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldNotMergeDefaultUrlOrArtifactWhenDependencySuppliesVersion()
|
||||||
|
{
|
||||||
|
Model model = new Model();
|
||||||
|
|
||||||
|
Dependency dep = new Dependency();
|
||||||
|
dep.setGroupId("myGroup");
|
||||||
|
dep.setArtifactId("myArtifact");
|
||||||
|
dep.setVersion("1.0.1");
|
||||||
|
|
||||||
|
model.addDependency(dep);
|
||||||
|
|
||||||
|
DependencyDefault def = new DependencyDefault();
|
||||||
|
def.setGroupId(dep.getGroupId());
|
||||||
|
def.setArtifactId(dep.getArtifactId());
|
||||||
|
def.setArtifact("myArtifact");
|
||||||
|
def.setUrl("http://www.google.com");
|
||||||
|
|
||||||
|
model.addDependencyDefault(def);
|
||||||
|
|
||||||
|
MavenProject project = new MavenProject(model);
|
||||||
|
|
||||||
|
new DefaultProjectDefaultsInjector().injectDefaults(project);
|
||||||
|
|
||||||
|
List deps = project.getDependencies();
|
||||||
|
assertEquals(1, deps.size());
|
||||||
|
|
||||||
|
Dependency result = (Dependency)deps.get(0);
|
||||||
|
assertEquals(dep.getVersion(), result.getVersion());
|
||||||
|
assertNull(result.getArtifact());
|
||||||
|
assertNull(result.getUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldMergeDefaultPropertiesWhenDependencyDoesntSupplyProperties()
|
||||||
|
{
|
||||||
|
Model model = new Model();
|
||||||
|
|
||||||
|
Dependency dep = new Dependency();
|
||||||
|
dep.setGroupId("myGroup");
|
||||||
|
dep.setArtifactId("myArtifact");
|
||||||
|
dep.setVersion("1.0.1");
|
||||||
|
|
||||||
|
model.addDependency(dep);
|
||||||
|
|
||||||
|
DependencyDefault def = new DependencyDefault();
|
||||||
|
def.setGroupId(dep.getGroupId());
|
||||||
|
def.setArtifactId(dep.getArtifactId());
|
||||||
|
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.setProperty("test", "value");
|
||||||
|
|
||||||
|
def.setProperties(props);
|
||||||
|
|
||||||
|
model.addDependencyDefault(def);
|
||||||
|
|
||||||
|
MavenProject project = new MavenProject(model);
|
||||||
|
|
||||||
|
new DefaultProjectDefaultsInjector().injectDefaults(project);
|
||||||
|
|
||||||
|
List deps = project.getDependencies();
|
||||||
|
assertEquals(1, deps.size());
|
||||||
|
|
||||||
|
Dependency result = (Dependency)deps.get(0);
|
||||||
|
assertEquals("value", result.getProperties().getProperty("test"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldNotMergeDefaultPropertiesWhenDependencySuppliesProperties()
|
||||||
|
{
|
||||||
|
Model model = new Model();
|
||||||
|
|
||||||
|
Dependency dep = new Dependency();
|
||||||
|
dep.setGroupId("myGroup");
|
||||||
|
dep.setArtifactId("myArtifact");
|
||||||
|
dep.setVersion("1.0.1");
|
||||||
|
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.setProperty("test", "value");
|
||||||
|
|
||||||
|
dep.setProperties(props);
|
||||||
|
|
||||||
|
model.addDependency(dep);
|
||||||
|
|
||||||
|
DependencyDefault def = new DependencyDefault();
|
||||||
|
def.setGroupId(dep.getGroupId());
|
||||||
|
def.setArtifactId(dep.getArtifactId());
|
||||||
|
|
||||||
|
Properties props2 = new Properties();
|
||||||
|
props2.setProperty("test", "value2");
|
||||||
|
|
||||||
|
def.setProperties(props2);
|
||||||
|
|
||||||
|
model.addDependencyDefault(def);
|
||||||
|
|
||||||
|
MavenProject project = new MavenProject(model);
|
||||||
|
|
||||||
|
new DefaultProjectDefaultsInjector().injectDefaults(project);
|
||||||
|
|
||||||
|
List deps = project.getDependencies();
|
||||||
|
assertEquals(1, deps.size());
|
||||||
|
|
||||||
|
Dependency result = (Dependency)deps.get(0);
|
||||||
|
assertEquals("value", result.getProperties().getProperty("test"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldRejectDependencyWhereNoVersionIsFoundAfterDefaultsInjection()
|
||||||
|
{
|
||||||
|
Model model = new Model();
|
||||||
|
|
||||||
|
Dependency dep = new Dependency();
|
||||||
|
dep.setGroupId("myGroup");
|
||||||
|
dep.setArtifactId("myArtifact");
|
||||||
|
|
||||||
|
model.addDependency(dep);
|
||||||
|
|
||||||
|
DependencyDefault def = new DependencyDefault();
|
||||||
|
def.setGroupId(dep.getGroupId());
|
||||||
|
def.setArtifactId(dep.getArtifactId());
|
||||||
|
|
||||||
|
model.addDependencyDefault(def);
|
||||||
|
|
||||||
|
MavenProject project = new MavenProject(model);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
new DefaultProjectDefaultsInjector().injectDefaults( project );
|
||||||
|
fail("Should fail to validate dependency without a version.");
|
||||||
|
}
|
||||||
|
catch ( IllegalStateException e )
|
||||||
|
{
|
||||||
|
// should throw when it detects a missing version in the test dependency.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -407,6 +407,18 @@
|
|||||||
<association>
|
<association>
|
||||||
<type>DistributionManagement</type>
|
<type>DistributionManagement</type>
|
||||||
</association>
|
</association>
|
||||||
|
</field>
|
||||||
|
<!-- [ jdcasey:01-Feb-2005 ] Added to handle version management for
|
||||||
|
| dependencies to be used in sub-projects. -->
|
||||||
|
<field>
|
||||||
|
<name>dependencyDefaults</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<required>false</required>
|
||||||
|
<description><![CDATA[Default dependency information for grouped projects inheriting from this one.]]></description>
|
||||||
|
<association>
|
||||||
|
<type>DependencyDefault</type>
|
||||||
|
<multiplicity>*</multiplicity>
|
||||||
|
</association>
|
||||||
</field>
|
</field>
|
||||||
<field>
|
<field>
|
||||||
<name>local</name>
|
<name>local</name>
|
||||||
@ -804,7 +816,8 @@
|
|||||||
<field>
|
<field>
|
||||||
<name>version</name>
|
<name>version</name>
|
||||||
<version>3.0.0+</version>
|
<version>3.0.0+</version>
|
||||||
<required>true</required>
|
<!-- [ jdcasey:01-Feb-2005 ] No longer required. We'll validate after injecting defaults. -->
|
||||||
|
<!-- required>true</required -->
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
The version of the dependency., e.g.
|
The version of the dependency., e.g.
|
||||||
<code>3.2.1</code>
|
<code>3.2.1</code>
|
||||||
@ -1754,6 +1767,91 @@
|
|||||||
</field>
|
</field>
|
||||||
</fields>
|
</fields>
|
||||||
</class>
|
</class>
|
||||||
|
<!-- [ jdcasey:01-Feb-2005 ] Added to handle version management for
|
||||||
|
| dependencies to be used in sub-projects. -->
|
||||||
|
<class>
|
||||||
|
<name>DependencyDefault</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<description><![CDATA[
|
||||||
|
Default information for a dependency to be used in a sub-project. The
|
||||||
|
required fields here will be used to match dependency references.
|
||||||
|
]]></description>
|
||||||
|
<fields>
|
||||||
|
<field>
|
||||||
|
<name>groupId</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<required>true</required>
|
||||||
|
<description><![CDATA[
|
||||||
|
The project group that produced the dependency, e.g.
|
||||||
|
<code>geronimo</code>.
|
||||||
|
]]></description>
|
||||||
|
<type>String</type>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>artifactId</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<required>true</required>
|
||||||
|
<description><![CDATA[
|
||||||
|
The unique id for an artifact produced by the project group, e.g.
|
||||||
|
<code>germonimo-jms</code>
|
||||||
|
]]></description>
|
||||||
|
<type>String</type>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>version</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<description><![CDATA[
|
||||||
|
The version of the dependency., e.g.
|
||||||
|
<code>3.2.1</code>
|
||||||
|
]]></description>
|
||||||
|
<type>String</type>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>url</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<description><![CDATA[
|
||||||
|
This url will be provided to the user if the jar file cannot be downloaded
|
||||||
|
from the central repository.
|
||||||
|
]]></description>
|
||||||
|
<type>String</type>
|
||||||
|
<comment>The URL should really be gleaned from a shared database of dependency information.</comment>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>artifact</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<description><![CDATA[Literal name of the artifact]]></description>
|
||||||
|
<type>String</type>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>type</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<description><![CDATA[
|
||||||
|
Other known recognised dependency types are:
|
||||||
|
<code>ejb</code> and
|
||||||
|
<code>plugin</code>.
|
||||||
|
]]></description>
|
||||||
|
<type>String</type>
|
||||||
|
<defaultValue>jar</defaultValue>
|
||||||
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>properties</name>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<description><![CDATA[
|
||||||
|
Properties about the dependency. Various plugins allow you to
|
||||||
|
<code>mark</code> dependencies with properties. For example the
|
||||||
|
<a href="plugins/war/index.html">war</a> plugin looks for a
|
||||||
|
<code>war.bundle</code> property, and if found will include the dependency
|
||||||
|
in
|
||||||
|
<code>WEB-INF/lib</code>. For example syntax, check the war plugin docs.
|
||||||
|
]]></description>
|
||||||
|
<type>Properties</type>
|
||||||
|
<association xml.mapStyle="inline">
|
||||||
|
<type>String</type>
|
||||||
|
<multiplicity>*</multiplicity>
|
||||||
|
</association>
|
||||||
|
</field>
|
||||||
|
</fields>
|
||||||
|
</class>
|
||||||
</classes>
|
</classes>
|
||||||
</model>
|
</model>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user