You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/04/05 19:43:42 UTC

svn commit: r391687 - in /maven/components/trunk: ./ maven-core-it/ maven-core-it/it0098/ maven-core-it/it0098/src/ maven-core-it/it0098/src/test/ maven-core-it/it0098/src/test/java/ maven-core-it/it0098/src/test/java/org/ maven-core-it/it0098/src/test...

Author: jdcasey
Date: Wed Apr  5 10:43:35 2006
New Revision: 391687

URL: http://svn.apache.org/viewcvs?rev=391687&view=rev
Log:
Merging from 2.0.x branch, revIds: 

- 391163:391165 
- 391167
- 391176
- 391202
- 391326
- 391328:391329
- 391398
- 391402
- 391404

These are the changes for the 2.0.4 RC's.


Added:
    maven/components/trunk/maven-core-it/it0098/src/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/
    maven/components/trunk/maven-core-it/it0098/src/test/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/
    maven/components/trunk/maven-core-it/it0098/src/test/java/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/java/
    maven/components/trunk/maven-core-it/it0098/src/test/java/org/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/java/org/
    maven/components/trunk/maven-core-it/it0098/src/test/java/org/apache/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/java/org/apache/
    maven/components/trunk/maven-core-it/it0098/src/test/java/org/apache/maven/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/java/org/apache/maven/
    maven/components/trunk/maven-core-it/it0098/src/test/java/org/apache/maven/it/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/java/org/apache/maven/it/
    maven/components/trunk/maven-core-it/it0098/src/test/java/org/apache/maven/it/it0098/
      - copied from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/java/org/apache/maven/it/it0098/
    maven/components/trunk/maven-core-it/it0098/src/test/java/org/apache/maven/it/it0098/QuotedCLIPropertyTest.java
      - copied unchanged from r391328, maven/components/branches/maven-2.0.x/maven-core-it/it0098/src/test/java/org/apache/maven/it/it0098/QuotedCLIPropertyTest.java
    maven/components/trunk/maven-core-it/it0103/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/
    maven/components/trunk/maven-core-it/it0103/goals.txt
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/goals.txt
    maven/components/trunk/maven-core-it/it0103/level1/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/level1/
    maven/components/trunk/maven-core-it/it0103/level1/level2/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/level1/level2/
    maven/components/trunk/maven-core-it/it0103/level1/level2/level3/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/level1/level2/level3/
    maven/components/trunk/maven-core-it/it0103/level1/level2/level3/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/level1/level2/level3/pom.xml
    maven/components/trunk/maven-core-it/it0103/level1/level2/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/level1/level2/pom.xml
    maven/components/trunk/maven-core-it/it0103/level1/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/level1/pom.xml
    maven/components/trunk/maven-core-it/it0103/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-core-it/it0103/pom.xml
    maven/components/trunk/maven-core-it/it0104/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/
    maven/components/trunk/maven-core-it/it0104/goals.txt
      - copied unchanged from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/goals.txt
    maven/components/trunk/maven-core-it/it0104/pom.xml
      - copied unchanged from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/pom.xml
    maven/components/trunk/maven-core-it/it0104/src/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/
    maven/components/trunk/maven-core-it/it0104/src/main/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/main/
    maven/components/trunk/maven-core-it/it0104/src/main/java/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/main/java/
    maven/components/trunk/maven-core-it/it0104/src/main/java/org/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/main/java/org/
    maven/components/trunk/maven-core-it/it0104/src/main/java/org/apache/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/main/java/org/apache/
    maven/components/trunk/maven-core-it/it0104/src/main/java/org/apache/maven/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/main/java/org/apache/maven/
    maven/components/trunk/maven-core-it/it0104/src/main/java/org/apache/maven/it/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/main/java/org/apache/maven/it/
    maven/components/trunk/maven-core-it/it0104/src/main/java/org/apache/maven/it/App.java
      - copied unchanged from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/main/java/org/apache/maven/it/App.java
    maven/components/trunk/maven-core-it/it0104/src/test/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/
    maven/components/trunk/maven-core-it/it0104/src/test/java/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/
    maven/components/trunk/maven-core-it/it0104/src/test/java/org/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/
    maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/apache/
    maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/maven/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/apache/maven/
    maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/maven/it/
      - copied from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/apache/maven/it/
    maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java
      - copied, changed from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t02/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/t02/
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t02/ProjectInheritanceTest.java
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/t02/ProjectInheritanceTest.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/
      - copied from r391202, maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/ProjectInheritanceTest.java
      - copied unchanged from r391202, maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/ProjectInheritanceTest.java
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/p5/
      - copied from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/p5/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/p5/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/p5/pom.xml
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/p4/pom.xml
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/p3/pom.xml
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/p2/pom.xml
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/p1/pom.xml
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t02/p0/pom.xml
      - copied unchanged from r391165, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t02/p0/pom.xml
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t03/
      - copied from r391202, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t03/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t03/p0/
      - copied from r391202, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t03/p0/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t03/p0/p1/
      - copied from r391202, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t03/p0/p1/
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t03/p0/p1/pom.xml
      - copied unchanged from r391202, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t03/p0/p1/pom.xml
    maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t03/p0/pom.xml
      - copied unchanged from r391202, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/inheritance-repo/t03/p0/pom.xml
    maven/components/trunk/src/
      - copied from r389525, maven/components/branches/maven-2.0.x/src/
    maven/components/trunk/src/assemble/
      - copied from r391651, maven/components/branches/maven-2.0.x/src/assemble/
Removed:
    maven/components/trunk/maven-core-it/it0098/expected-results.txt
    maven/components/trunk/maven-core-it/it0098/verifier.properties
Modified:
    maven/components/trunk/maven-core-it/README.txt
    maven/components/trunk/maven-core-it/integration-tests.txt
    maven/components/trunk/maven-core-it/it0098/cli-options.txt
    maven/components/trunk/maven-core-it/it0098/goals.txt
    maven/components/trunk/maven-core-it/it0098/pom.xml
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
    maven/components/trunk/pom.xml

Modified: maven/components/trunk/maven-core-it/README.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/README.txt?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/README.txt (original)
+++ maven/components/trunk/maven-core-it/README.txt Wed Apr  5 10:43:35 2006
@@ -277,6 +277,14 @@
 it0102: Test that <activeByDefault/> calculations for profile activation only
         use profiles defined in the POM. [MNG-2136]
 
+it0103: Verify that multimodule builds where one project references another as
+        a parent can build, even if that parent is not correctly referenced by
+        <relativePath/> and is not in the local repository. [MNG-2196]
+
+it0104: Verify that plugin configurations are resolved correctly, particularly
+        when they contain ${project.build.directory} in the string value of a 
+        Map.Entry.
+
 -------------------------------------------------------------------------------
 
 - generated sources

Modified: maven/components/trunk/maven-core-it/integration-tests.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/integration-tests.txt (original)
+++ maven/components/trunk/maven-core-it/integration-tests.txt Wed Apr  5 10:43:35 2006
@@ -1,3 +1,5 @@
+#it0104 Commenting out, not fixed until post-2.0.4, due to dependency on new plexus-container-default version.
+it0103
 it0102
 it0101
 it0100

Modified: maven/components/trunk/maven-core-it/it0098/cli-options.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0098/cli-options.txt?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/it0098/cli-options.txt (original)
+++ maven/components/trunk/maven-core-it/it0098/cli-options.txt Wed Apr  5 10:43:35 2006
@@ -1 +1 @@
--DgroupId=org.someproject "-DartifactId=test project"
+-Dtest.property="Test Property"

Modified: maven/components/trunk/maven-core-it/it0098/goals.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0098/goals.txt?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/it0098/goals.txt (original)
+++ maven/components/trunk/maven-core-it/it0098/goals.txt Wed Apr  5 10:43:35 2006
@@ -1 +1 @@
-archetype:create
+test

Modified: maven/components/trunk/maven-core-it/it0098/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0098/pom.xml?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/it0098/pom.xml (original)
+++ maven/components/trunk/maven-core-it/it0098/pom.xml Wed Apr  5 10:43:35 2006
@@ -1,6 +1,13 @@
 <project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.it0098</groupId>
-  <artifactId>it0098-archetype-orchestration-test</artifactId>
+  <artifactId>it0098</artifactId>
   <version>1</version>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+    </dependency>
+  </dependencies>
 </project>

Copied: maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java (from r391326, maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java)
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java?p2=maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java&p1=maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java&r1=391326&r2=391687&rev=391687&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java (original)
+++ maven/components/trunk/maven-core-it/it0104/src/test/java/org/apache/maven/it/AppTest.java Wed Apr  5 10:43:35 2006
@@ -24,6 +24,6 @@
         System.out.println( "Got 'target.dir' of: '" + targetDir + "'" );
 
         assertNotNull( "System property 'target.dir' is not present.", targetDir );
-        assertFalse( "System property 'target.dir' was not resolved correctly.", "${project.build.directory}".equals( targetDir ) );
+        assertTrue( "System property 'target.dir' was not resolved correctly.", targetDir.indexOf( "${" ) < 0 );
     }
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Apr  5 10:43:35 2006
@@ -151,8 +151,10 @@
     private ProfileInjector profileInjector;
 
     private ModelValidator validator;
+    
+    private Map rawProjectCache = new HashMap();
 
-    private Map projectCache = new HashMap();
+    private Map processedProjectCache = new HashMap();
 
     // TODO: make it a component
     private MavenXpp3Reader modelReader;
@@ -213,7 +215,7 @@
     {
         String cacheKey = createCacheKey( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
 
-        MavenProject project = (MavenProject) projectCache.get( cacheKey );
+        MavenProject project = (MavenProject) processedProjectCache.get( cacheKey );
 
         if ( project != null )
         {
@@ -684,6 +686,8 @@
         }
 
         project.setOriginalModel( originalModel );
+        
+        rawProjectCache.put( createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() ), new MavenProject( project ) );
 
         // we don't have to force the collision exception for superModel here, it's already been done in getSuperModel()
         MavenProject previousProject = superProject;
@@ -741,7 +745,7 @@
             throw new InvalidProjectModelException( projectId, pomLocation, e.getMessage(), e );
         }
 
-        projectCache.put( createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() ), project );
+        processedProjectCache.put( createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() ), project );
 
         // jvz:note
         // this only happens if we are building from a source file
@@ -761,10 +765,25 @@
             // Only track the file of a POM in the source tree
             project.setFile( projectDescriptor );
         }
+        
+        MavenProject rawParent = project.getParent();
+        
+        if ( rawParent != null )
+        {
+            String cacheKey = createCacheKey( rawParent.getGroupId(), rawParent.getArtifactId(), rawParent.getVersion() );
+            
+            MavenProject processedParent = (MavenProject) processedProjectCache.get( cacheKey );
+            
+            // yeah, this null check might be a bit paranoid, but better safe than sorry...
+            if ( processedParent != null )
+            {
+                project.setParent( processedParent );
+            }
+        }
 
         return project;
     }
-
+    
     private String safeVersionlessKey( String groupId, String artifactId )
     {
         String gid = groupId;
@@ -1009,7 +1028,17 @@
             File parentDescriptor = null;
 
             model = null;
-
+            
+            String parentKey = createCacheKey( parentModel.getGroupId(), parentModel.getArtifactId(), parentModel.getVersion() );
+            MavenProject parentProject = (MavenProject) rawProjectCache.get( parentKey );
+    
+            if ( parentProject != null )
+            {
+                model = ModelUtils.cloneModel( parentProject.getModel() );
+                
+                parentDescriptor = parentProject.getFile();
+            }
+            
             String parentRelativePath = parentModel.getRelativePath();
 
             // if we can't find a cached model matching the parent spec, then let's try to look on disk using

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Wed Apr  5 10:43:35 2006
@@ -173,30 +173,71 @@
         {
             this.dependencyArtifacts = Collections.unmodifiableSet( project.dependencyArtifacts );
         }
+        
         if ( project.artifacts != null )
         {
             this.artifacts = Collections.unmodifiableSet( project.artifacts );
         }
-        this.pluginArtifacts = Collections.unmodifiableSet( project.pluginArtifacts );
-        this.reportArtifacts = Collections.unmodifiableSet( project.reportArtifacts );
-        this.extensionArtifacts = Collections.unmodifiableSet( project.extensionArtifacts );
+        
+        if ( project.pluginArtifacts != null )
+        {
+            this.pluginArtifacts = Collections.unmodifiableSet( project.pluginArtifacts );
+        }
+        
+        if ( project.reportArtifacts != null )
+        {
+            this.reportArtifacts = Collections.unmodifiableSet( project.reportArtifacts );
+        }        
+        
+        if ( project.extensionArtifacts != null )
+        {
+            this.extensionArtifacts = Collections.unmodifiableSet( project.extensionArtifacts );
+        }        
+        
         this.parentArtifact = project.parentArtifact;
 
-        this.remoteArtifactRepositories = Collections.unmodifiableList( project.remoteArtifactRepositories );
-        this.pluginArtifactRepositories = Collections.unmodifiableList( project.pluginArtifactRepositories );
-        this.collectedProjects = Collections.unmodifiableList( project.collectedProjects );
-        this.activeProfiles = Collections.unmodifiableList( project.activeProfiles );
-
-        // clone properties modifyable by plugins in a forked lifecycle
-        this.attachedArtifacts = new ArrayList( project.getAttachedArtifacts() );
-
-        // no need for execution project
-
-        // clone source roots
-        this.compileSourceRoots = new ArrayList( project.compileSourceRoots );
-        this.testCompileSourceRoots = new ArrayList( project.testCompileSourceRoots );
-        this.scriptSourceRoots = new ArrayList( project.scriptSourceRoots );
-
+        if ( project.remoteArtifactRepositories != null )
+        {
+            this.remoteArtifactRepositories = Collections.unmodifiableList( project.remoteArtifactRepositories );
+        }        
+        
+        if ( project.pluginArtifactRepositories != null )
+        {
+            this.pluginArtifactRepositories = Collections.unmodifiableList( project.pluginArtifactRepositories );
+        }        
+        
+        if ( project.collectedProjects != null )
+        {
+            this.collectedProjects = Collections.unmodifiableList( project.collectedProjects );
+        }        
+        
+        if ( project.activeProfiles != null )
+        {
+            this.activeProfiles = Collections.unmodifiableList( project.activeProfiles );
+        }        
+        
+        if ( project.getAttachedArtifacts() != null )
+        {
+            // clone properties modifyable by plugins in a forked lifecycle
+            this.attachedArtifacts = new ArrayList( project.getAttachedArtifacts() );
+        }        
+        
+        if ( project.compileSourceRoots != null )
+        {
+            // clone source roots
+            this.compileSourceRoots = new ArrayList( project.compileSourceRoots );
+        }        
+        
+        if ( project.testCompileSourceRoots != null )
+        {
+            this.testCompileSourceRoots = new ArrayList( project.testCompileSourceRoots );
+        }        
+        
+        if ( project.scriptSourceRoots != null )
+        {
+            this.scriptSourceRoots = new ArrayList( project.scriptSourceRoots );
+        }        
+        
         this.model = ModelUtils.cloneModel( project.model );
 
         if ( project.originalModel != null )
@@ -206,7 +247,10 @@
 
         this.executionRoot = project.executionRoot;
 
-        this.artifact = ArtifactUtils.copyArtifact( project.artifact );
+        if ( project.artifact != null )
+        {
+            this.artifact = ArtifactUtils.copyArtifact( project.artifact );
+        }        
     }
     
     // TODO: Find a way to use <relativePath/> here...it's tricky, because the moduleProject
@@ -802,7 +846,14 @@
 
     public String getGroupId()
     {
-        return model.getGroupId();
+        String groupId = model.getGroupId();
+        
+        if ( groupId == null && model.getParent() != null )
+        {
+            groupId = model.getParent().getGroupId();
+        }
+        
+        return groupId;
     }
 
     public void setArtifactId( String artifactId )
@@ -840,7 +891,14 @@
 
     public String getVersion()
     {
-        return model.getVersion();
+        String version = model.getVersion();
+        
+        if ( version == null && model.getParent() != null )
+        {
+            version = model.getParent().getVersion();
+        }
+        
+        return version;
     }
 
     public String getPackaging()

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java Wed Apr  5 10:43:35 2006
@@ -20,10 +20,34 @@
 import java.io.IOException;
 
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
 
 public class MavenProjectTest
     extends AbstractMavenProjectTestCase
 {
+    
+    public void testIdentityProtoInheritance()
+    {
+        Parent parent = new Parent();
+        
+        parent.setGroupId( "test-group" );
+        parent.setVersion( "1000" );
+        parent.setArtifactId( "test-artifact" );
+        
+        Model model = new Model();
+        
+        model.setParent( parent );
+        model.setArtifactId( "real-artifact" );
+        
+        MavenProject project = new MavenProject( model );
+        
+        assertEquals( "groupId proto-inheritance failed.", "test-group", project.getGroupId() );
+        assertEquals( "artifactId is masked.", "real-artifact", project.getArtifactId() );
+        assertEquals( "version proto-inheritance failed.", "1000", project.getVersion() );
+        
+        // draw the NPE.
+        project.getId();
+    }
     
     public void testEmptyConstructor()
     {

Modified: maven/components/trunk/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/pom.xml?rev=391687&r1=391686&r2=391687&view=diff
==============================================================================
--- maven/components/trunk/pom.xml (original)
+++ maven/components/trunk/pom.xml Wed Apr  5 10:43:35 2006
@@ -156,6 +156,9 @@
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-container-default</artifactId>
+        <!-- We need to upgrade this to 1.0-alpha-10-SNAPSHOT for >= 2.0.5, to correct MNG-2201
+        <version>1.0-alpha-10-SNAPSHOT</version>
+        -->
         <version>1.0-alpha-9</version>
       </dependency>
       <dependency>