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 );