Repository: maven-archetype
Updated Branches:
  refs/heads/master 45d44b1d9 -> f2f119e17


[ARCHETYPE-518] Archetype cannot be created from project if parent pom.xml 
evaluates system properties
Maven3 is more efficient compared to Maven2, no workarounds required


Project: http://git-wip-us.apache.org/repos/asf/maven-archetype/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-archetype/commit/f2f119e1
Tree: http://git-wip-us.apache.org/repos/asf/maven-archetype/tree/f2f119e1
Diff: http://git-wip-us.apache.org/repos/asf/maven-archetype/diff/f2f119e1

Branch: refs/heads/master
Commit: f2f119e17af285d731b85d52636897aa0760b6c4
Parents: 45d44b1
Author: rfscholte <rfscho...@apache.org>
Authored: Tue Feb 14 22:43:51 2017 +0100
Committer: rfscholte <rfscho...@apache.org>
Committed: Tue Feb 14 22:43:51 2017 +0100

----------------------------------------------------------------------
 .../archetype/ArchetypeCreationRequest.java     | 15 ++++++
 .../creator/FilesetArchetypeCreator.java        | 48 +++++---------------
 .../creator/DefaultArchetypeCreatorIT.java      | 24 +++++-----
 .../mojos/CreateArchetypeFromProjectMojo.java   |  2 +-
 4 files changed, 39 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/f2f119e1/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
----------------------------------------------------------------------
diff --git 
a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
 
b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
index e85e6a8..c5cc23a 100644
--- 
a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
+++ 
b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
@@ -21,6 +21,7 @@ package org.apache.maven.archetype;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -30,6 +31,8 @@ import java.util.Properties;
 /** @author Jason van Zyl */
 public class ArchetypeCreationRequest
 {
+    private ProjectBuildingRequest projectBuildingRequest;
+
     private ArtifactRepository localRepository;
 
     private MavenProject project;
@@ -80,6 +83,18 @@ public class ArchetypeCreationRequest
         return this;
     }
 
+    public ProjectBuildingRequest getProjectBuildingRequest()
+    {
+        return projectBuildingRequest;
+    }
+
+    public ArchetypeCreationRequest setProjectBuildingRequest( 
ProjectBuildingRequest projectBuildingRequest )
+    {
+        this.projectBuildingRequest = projectBuildingRequest;
+        
+        return this;
+    }
+
     public MavenProject getProject()
     {
         return project;

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/f2f119e1/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
----------------------------------------------------------------------
diff --git 
a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
 
b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
index 0022341..85b1359 100644
--- 
a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
+++ 
b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
@@ -54,8 +54,6 @@ import org.apache.maven.archetype.metadata.FileSet;
 import org.apache.maven.archetype.metadata.ModuleDescriptor;
 import org.apache.maven.archetype.metadata.RequiredProperty;
 import 
org.apache.maven.archetype.metadata.io.xpp3.ArchetypeDescriptorXpp3Writer;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Extension;
@@ -64,10 +62,7 @@ import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginManagement;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.Resource;
-import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.shared.invoker.DefaultInvocationRequest;
 import org.apache.maven.shared.invoker.InvocationRequest;
@@ -102,9 +97,6 @@ public class FilesetArchetypeCreator
 
     @Requirement
     private PomManager pomManager;
-
-    @Requirement
-    private ProjectBuilder projectBuilder;
     
     @Requirement
     private Invoker invoker;
@@ -118,7 +110,6 @@ public class FilesetArchetypeCreator
         boolean preserveCData = request.isPreserveCData();
         boolean keepParent = request.isKeepParent();
         boolean partialArchetype = request.isPartialArchetype();
-        ArtifactRepository localRepository = request.getLocalRepository();
         File outputDirectory = request.getOutputDirectory();
         File basedir = project.getBasedir();
 
@@ -143,8 +134,8 @@ public class FilesetArchetypeCreator
 
         try
         {
-            File archetypePomFile =
-                createArchetypeProjectPom( project, localRepository, 
configurationProperties, outputDirectory );
+            File archetypePomFile = createArchetypeProjectPom( project, 
request.getProjectBuildingRequest(),
+                                                               
configurationProperties, outputDirectory );
 
             File archetypeResourcesDirectory = new File( outputDirectory, 
getTemplateOutputDirectory() );
 
@@ -395,7 +386,7 @@ public class FilesetArchetypeCreator
     /**
      * Create the archetype project pom.xml file, that will be used to build 
the archetype.
      */
-    private File createArchetypeProjectPom( MavenProject project, 
ArtifactRepository localRepository,
+    private File createArchetypeProjectPom( MavenProject project, 
ProjectBuildingRequest buildingRequest,
                                             Properties 
configurationProperties, File projectDir )
         throws TemplateCreationException, IOException
     {
@@ -428,37 +419,20 @@ public class FilesetArchetypeCreator
 
         if ( project.getParent() != null )
         {
-            Artifact pa = project.getParentArtifact();
+            MavenProject p = project.getParent();
 
-            try
+            if ( p.getDistributionManagement() != null )
             {
-                ProjectBuildingRequest buildingRequest = new 
DefaultProjectBuildingRequest();
-                buildingRequest.setLocalRepository( localRepository );
-                buildingRequest.setRemoteRepositories( 
project.getRemoteArtifactRepositories() );
-//                buildingRequest.setSystemProperties( System.getProperties() 
);
-//                buildingRequest.setUserProperties( configurationProperties );
-                
-                MavenProject p = projectBuilder.build( pa, buildingRequest 
).getProject();
-
-                if ( p.getDistributionManagement() != null )
-                {
-                    model.setDistributionManagement( 
p.getDistributionManagement() );
-                }
+                model.setDistributionManagement( p.getDistributionManagement() 
);
+            }
 
-                if ( p.getBuildExtensions() != null )
+            if ( p.getBuildExtensions() != null )
+            {
+                for ( Extension be : p.getBuildExtensions() )
                 {
-                    for ( Extension be : p.getBuildExtensions() )
-                    {
-                        model.getBuild().addExtension( be );
-                    }
+                    model.getBuild().addExtension( be );
                 }
             }
-            catch ( ProjectBuildingException e )
-            {
-                throw new TemplateCreationException(
-                    "Error reading parent POM of project: " + pa.getGroupId() 
+ ":" + pa.getArtifactId() + ":"
-                        + pa.getVersion() );
-            }
         }
 
         Extension extension = new Extension();

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/f2f119e1/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorIT.java
----------------------------------------------------------------------
diff --git 
a/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorIT.java
 
b/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorIT.java
index f6156e1..58f9b81 100644
--- 
a/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorIT.java
+++ 
b/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorIT.java
@@ -128,7 +128,8 @@ public class DefaultArchetypeCreatorIT
             .setPreserveCData( false )
             .setKeepParent( false )
             .setPostPhase( "verify" )
-            .setLocalRepository( localRepository );
+            .setLocalRepository( localRepository )
+            .setProjectBuildingRequest( buildingRequest );
 
         ArchetypeCreationResult result = new ArchetypeCreationResult();
 
@@ -191,17 +192,16 @@ public class DefaultArchetypeCreatorIT
         assertExists(template1);
     }
 
-//    @Ignore("ARCHETYPE-518")
-//    public void testSystemPropertiesAreIncluded()
-//                    throws Exception
-//    {
-//        String project = "included-system-properties";
-//
-//        createFilesetArchetype( project );
-//
-//        File template1 = getTemplateFile( project, "src/main/java/App.java" 
);
-//        assertExists(template1);
-//    }
+    public void testSystemPropertiesAreIncluded()
+                    throws Exception
+    {
+        String project = "included-system-properties";
+
+        createFilesetArchetype( project );
+
+        File template1 = getTemplateFile( project, "src/main/java/App.java" );
+        assertExists(template1);
+    }
 
     public void testCreateFilesetArchetype1()
         throws Exception

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/f2f119e1/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
----------------------------------------------------------------------
diff --git 
a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
 
b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
index e57726f..97c7740 100644
--- 
a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
+++ 
b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
@@ -250,7 +250,7 @@ public class CreateArchetypeFromProjectMojo
                 /* Should be refactored to use some ant patterns 
*/.setFiltereds( filtereds )
                 /* This should be correctly handled */.setPreserveCData( 
preserveCData ).setKeepParent(
                     keepParent ).setPartialArchetype( partialArchetype )
-                .setLocalRepository( localRepository )
+                .setLocalRepository( localRepository 
).setProjectBuildingRequest( session.getProjectBuildingRequest() )
                 /* this should be resolved and asked for user to verify 
*/.setPackageName( packageName ).setPostPhase(
                     archetypePostPhase ).setOutputDirectory( outputDirectory );
 

Reply via email to