You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/10/14 22:12:37 UTC
[maven] 04/04: [MNG-6656] Enable maven.experimental.buildconsumer
by default
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 91f87994a4fb93aa7f90e82c69eb73b05a9302b6
Author: rfscholte <rf...@apache.org>
AuthorDate: Tue Oct 15 00:12:17 2019 +0200
[MNG-6656] Enable maven.experimental.buildconsumer by default
---
.../project/AbstractMavenProjectTestCase.java | 35 ++++--
.../apache/maven/project/ProjectClasspathTest.java | 1 +
.../maven/project/DefaultProjectBuilder.java | 2 +-
.../maven/AbstractCoreMavenComponentTestCase.java | 24 +++--
.../project/AbstractMavenProjectTestCase.java | 33 ++++--
.../project/DefaultMavenProjectBuilderTest.java | 16 ++-
.../apache/maven/project/PomConstructionTest.java | 14 ++-
.../apache/maven/project/ProjectBuilderTest.java | 8 ++
.../maven/repository/TestRepositorySystem.java | 4 +-
.../settings/PomConstructionWithSettingsTest.java | 27 ++++-
.../java/org/apache/maven/feature/Features.java | 2 +-
.../maven/model/building/DefaultModelBuilder.java | 119 ++++++++++++---------
.../validation/DefaultModelValidatorTest.java | 12 ++-
.../xml/sax/filter/AbstractEventXMLFilter.java | 8 +-
.../maven/xml/sax/filter/ParentXMLFilter.java | 8 +-
.../maven/xml/sax/filter/ParentXMLFilterTest.java | 3 +
16 files changed, 215 insertions(+), 101 deletions(-)
diff --git a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
index 7e3f7e6..7aa6585 100644
--- a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
+++ b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
@@ -23,11 +23,13 @@ import java.net.URL;
import java.util.Arrays;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusTestCase;
@@ -42,6 +44,8 @@ public abstract class AbstractMavenProjectTestCase
protected ProjectBuilder projectBuilder;
protected RepositorySystem repositorySystem;
+
+ private SessionScope sessionScope;
@Override
protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
@@ -67,12 +71,27 @@ public abstract class AbstractMavenProjectTestCase
}
repositorySystem = lookup( RepositorySystem.class );
+
+ }
+
+ private void seedMavenSession( MavenSession mavenSession ) throws Exception
+ {
+ if ( sessionScope == null )
+ {
+ sessionScope = lookup( SessionScope.class );
+ sessionScope.enter();
+ sessionScope.seed( MavenSession.class, mavenSession );
+ }
}
@Override
protected void tearDown()
throws Exception
{
+ if ( sessionScope != null )
+ {
+ sessionScope.exit();
+ }
projectBuilder = null;
super.tearDown();
@@ -121,11 +140,7 @@ public abstract class AbstractMavenProjectTestCase
protected ArtifactRepository getLocalRepository()
throws Exception
{
- ArtifactRepositoryLayout repoLayout = lookup( ArtifactRepositoryLayout.class, "legacy" );
-
- ArtifactRepository r = repositorySystem.createArtifactRepository( "local", "file://" + getLocalRepositoryPath().getAbsolutePath(), repoLayout, null, null );
-
- return r;
+ return repositorySystem.createLocalRepository( getLocalRepositoryPath() );
}
// ----------------------------------------------------------------------
@@ -142,6 +157,10 @@ public abstract class AbstractMavenProjectTestCase
configuration.setResolveDependencies( true );
initRepoSession( configuration );
+ seedMavenSession( new MavenSession( getContainer(),
+ configuration.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
+
try
{
return projectBuilder.build( pom, configuration ).getProject();
@@ -170,6 +189,10 @@ public abstract class AbstractMavenProjectTestCase
ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
configuration.setLocalRepository( getLocalRepository() );
initRepoSession( configuration );
+
+ seedMavenSession( new MavenSession( getContainer(),
+ configuration.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
return projectBuilder.build( pom, configuration ).getProject();
}
diff --git a/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java b/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
index d7ae86e..59c6e0d 100644
--- a/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
+++ b/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
@@ -35,6 +35,7 @@ public class ProjectClasspathTest
public void setUp()
throws Exception
{
+ super.setUp();
ArtifactResolver resolver = lookup( ArtifactResolver.class, "classpath" );
DefaultArtifactDescriptorReader pomReader = (DefaultArtifactDescriptorReader)lookup(ArtifactDescriptorReader.class);
pomReader.setArtifactResolver( resolver );
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index c3a0a8f..ce6c9dc 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -164,7 +164,7 @@ public class DefaultProjectBuilder
request.setModelBuildingListener( listener );
request.setPomFile( pomFile );
- request.setTransformPom( true );
+ request.setTransformPom( pomFile != null );
request.setModelSource( modelSource );
request.setLocationTracking( true );
diff --git a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
index 179b8f9..0931d1b 100644
--- a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
+++ b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
@@ -44,10 +44,10 @@ import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.FileUtils;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
@@ -56,12 +56,12 @@ import org.eclipse.aether.repository.LocalRepository;
public abstract class AbstractCoreMavenComponentTestCase
extends PlexusTestCase
{
- @Requirement
protected RepositorySystem repositorySystem;
- @Requirement
protected org.apache.maven.project.ProjectBuilder projectBuilder;
+ protected SessionScope sessionScope;
+
protected void setUp()
throws Exception
{
@@ -144,9 +144,17 @@ public abstract class AbstractCoreMavenComponentTestCase
.setRemoteRepositories( request.getRemoteRepositories() )
.setPluginArtifactRepositories( request.getPluginArtifactRepositories() )
.setSystemProperties( executionProperties );
+ initRepoSession( configuration );
- List<MavenProject> projects = new ArrayList<>();
+ MavenSession session =
+ new MavenSession( getContainer(), configuration.getRepositorySession(), request,
+ new DefaultMavenExecutionResult() );
+ sessionScope = lookup( SessionScope.class );
+ sessionScope.enter();
+ sessionScope.seed( MavenSession.class, session );
+
+ List<MavenProject> projects = new ArrayList<>();
if ( pom != null )
{
MavenProject project = projectBuilder.build( pom, configuration ).getProject();
@@ -172,15 +180,9 @@ public abstract class AbstractCoreMavenComponentTestCase
project.setPluginArtifactRepositories( request.getPluginArtifactRepositories() );
projects.add( project );
}
-
- initRepoSession( configuration );
-
- MavenSession session =
- new MavenSession( getContainer(), configuration.getRepositorySession(), request,
- new DefaultMavenExecutionResult() );
session.setProjects( projects );
session.setAllProjects( session.getProjects() );
-
+
return session;
}
diff --git a/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java b/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
index 9f836c2..82189e9 100644
--- a/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
+++ b/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
@@ -23,11 +23,13 @@ import java.net.URL;
import java.util.Arrays;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusTestCase;
@@ -42,6 +44,8 @@ public abstract class AbstractMavenProjectTestCase
protected ProjectBuilder projectBuilder;
protected RepositorySystem repositorySystem;
+
+ private SessionScope sessionScope;
@Override
protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
@@ -67,12 +71,17 @@ public abstract class AbstractMavenProjectTestCase
}
repositorySystem = lookup( RepositorySystem.class );
+
+ sessionScope = lookup( SessionScope.class );
+ sessionScope.enter();
}
@Override
protected void tearDown()
throws Exception
{
+ sessionScope.exit();
+
projectBuilder = null;
super.tearDown();
@@ -82,6 +91,11 @@ public abstract class AbstractMavenProjectTestCase
{
return projectBuilder;
}
+
+ protected final SessionScope getSessionScope()
+ {
+ return sessionScope;
+ }
@Override
protected String getCustomConfigurationName()
@@ -119,11 +133,7 @@ public abstract class AbstractMavenProjectTestCase
protected ArtifactRepository getLocalRepository()
throws Exception
{
- ArtifactRepositoryLayout repoLayout = lookup( ArtifactRepositoryLayout.class, "legacy" );
-
- ArtifactRepository r = repositorySystem.createArtifactRepository( "local", "file://" + getLocalRepositoryPath().getAbsolutePath(), repoLayout, null, null );
-
- return r;
+ return repositorySystem.createLocalRepository( getLocalRepositoryPath() );
}
// ----------------------------------------------------------------------
@@ -138,6 +148,9 @@ public abstract class AbstractMavenProjectTestCase
configuration.setProcessPlugins( false );
configuration.setResolveDependencies( true );
+ sessionScope.seed( MavenSession.class, new MavenSession( getContainer(),
+ configuration.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
try
{
return projectBuilder.build( pom, configuration ).getProject();
@@ -164,6 +177,10 @@ public abstract class AbstractMavenProjectTestCase
{
ProjectBuildingRequest configuration = newBuildingRequest();
+ sessionScope.seed( MavenSession.class, new MavenSession( getContainer(),
+ configuration.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
+
return projectBuilder.build( pom, configuration ).getProject();
}
@@ -174,6 +191,10 @@ public abstract class AbstractMavenProjectTestCase
configuration.setLocalRepository( this.getLocalRepository() );
configuration.setRemoteRepositories( Arrays.asList( this.repositorySystem.createDefaultRemoteRepository() ) );
initRepoSession( configuration );
+
+ sessionScope.seed( MavenSession.class, new MavenSession( getContainer(),
+ configuration.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
return projectBuilder.build( pom, configuration ).getProject();
}
diff --git a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
index 008c6d3..fa3501a 100644
--- a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
@@ -28,12 +28,13 @@ import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
import org.codehaus.plexus.util.FileUtils;
public class DefaultMavenProjectBuilderTest
extends AbstractMavenProjectTestCase
{
-
private List<File> filesToDelete = new ArrayList<>();
private File localRepoDir;
@@ -84,6 +85,11 @@ public class DefaultMavenProjectBuilderTest
configuration.setLocalRepository( getLocalRepository() );
initRepoSession( configuration );
+ getSessionScope().seed( MavenSession.class,
+ new MavenSession( getContainer(),
+ configuration.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
+
return projectBuilder.build( pom, allowStub, configuration ).getProject();
}
@@ -225,6 +231,10 @@ public class DefaultMavenProjectBuilderTest
ProjectBuildingRequest request = newBuildingRequest();
request.setProcessPlugins( false );
request.setResolveDependencies( true );
+
+ getSessionScope().seed( MavenSession.class, new MavenSession( getContainer(),
+ request.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
projectBuilder.build( pomFile, request );
fail( "Project building did not fail despite invalid POM" );
}
@@ -249,6 +259,10 @@ public class DefaultMavenProjectBuilderTest
ProjectBuildingRequest request = newBuildingRequest();
request.setProcessPlugins( false );
request.setResolveDependencies( true );
+
+ getSessionScope().seed( MavenSession.class, new MavenSession( getContainer(),
+ request.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
projectBuilder.build( pomFile, request );
}
diff --git a/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java b/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
index 9e16ebc..a639a38 100644
--- a/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
@@ -22,6 +22,7 @@ package org.apache.maven.project;
import static org.hamcrest.Matchers.endsWith;
import static org.hamcrest.Matchers.lessThan;
import static org.hamcrest.Matchers.startsWith;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertThat;
import java.io.File;
@@ -32,19 +33,21 @@ import java.util.Map;
import java.util.Properties;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginExecution;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.project.harness.PomTestWrapper;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusTestCase;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
import org.eclipse.aether.repository.LocalRepository;
-import static org.junit.Assert.assertNotEquals;
public class PomConstructionTest
extends PlexusTestCase
@@ -58,6 +61,8 @@ public class PomConstructionTest
private DefaultProjectBuilder projectBuilder;
private RepositorySystem repositorySystem;
+
+ private SessionScope sessionScope;
private File testDirectory;
@@ -76,6 +81,8 @@ public class PomConstructionTest
new File( getBasedir(), BASE_MIXIN_DIR );
projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class );
repositorySystem = lookup( RepositorySystem.class );
+ sessionScope = lookup( SessionScope.class );
+ sessionScope.enter();
}
@Override
@@ -83,6 +90,7 @@ public class PomConstructionTest
throws Exception
{
projectBuilder = null;
+ sessionScope.exit();
super.tearDown();
}
@@ -1873,6 +1881,10 @@ public class PomConstructionTest
LocalRepository localRepo = new LocalRepository( config.getLocalRepository().getBasedir() );
repoSession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repoSession, localRepo ) );
config.setRepositorySession( repoSession );
+
+ sessionScope.seed( MavenSession.class, new MavenSession( getContainer(),
+ config.getRepositorySession(),
+ new DefaultMavenExecutionRequest(), null ) );
return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, config ).getProject() );
}
diff --git a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
index 4833b00..efa8a4c 100644
--- a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
@@ -37,6 +37,7 @@ import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.building.FileModelSource;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelSource;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.apache.maven.shared.utils.io.FileUtils;
import com.google.common.io.Files;
@@ -75,9 +76,16 @@ public class ProjectBuilderTest
ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
configuration.setRepositorySession( mavenSession.getRepositorySession() );
ModelSource modelSource = new FileModelSource( pomFile );
+
+ SessionScope sessionScope = lookup( SessionScope.class );
+ sessionScope.enter();
+ sessionScope.seed( MavenSession.class, mavenSession );
+
ProjectBuildingResult result =
lookup( org.apache.maven.project.ProjectBuilder.class ).build( modelSource, configuration );
+ sessionScope.exit();
+
assertNotNull( result.getProject().getParentFile() );
}
diff --git a/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java b/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
index 0e054c6..75da311 100644
--- a/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
+++ b/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
@@ -103,14 +103,14 @@ public class TestRepositorySystem
public ArtifactRepository createDefaultLocalRepository()
throws InvalidRepositoryException
{
- return createLocalRepository( new File( System.getProperty( "basedir", "" ), "target/local-repo" ).getAbsoluteFile() );
+ return createLocalRepository( new File( System.getProperty( "basedir", "." ), "target/local-repo" ).getAbsoluteFile() );
}
public ArtifactRepository createDefaultRemoteRepository()
throws InvalidRepositoryException
{
return new MavenArtifactRepository( DEFAULT_REMOTE_REPO_ID, "file://"
- + new File( System.getProperty( "basedir", "" ), "src/test/remote-repo" ).toURI().getPath(),
+ + new File( System.getProperty( "basedir", "." ), "src/test/remote-repo" ).getAbsoluteFile().toURI().getPath(),
new DefaultRepositoryLayout(), new ArtifactRepositoryPolicy(),
new ArtifactRepositoryPolicy() );
}
diff --git a/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java b/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
index 78d0da8..eb6270b 100644
--- a/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
+++ b/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
@@ -19,7 +19,14 @@ package org.apache.maven.settings;
* under the License.
*/
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Profile;
import org.apache.maven.project.DefaultProjectBuilder;
import org.apache.maven.project.DefaultProjectBuildingRequest;
@@ -28,6 +35,7 @@ import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.harness.PomTestWrapper;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.PlexusConstants;
@@ -38,10 +46,6 @@ import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
import org.eclipse.aether.repository.LocalRepository;
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-
public class PomConstructionWithSettingsTest
extends PlexusTestCase
{
@@ -52,9 +56,11 @@ public class PomConstructionWithSettingsTest
private DefaultProjectBuilder projectBuilder;
private RepositorySystem repositorySystem;
+
+ private SessionScope sessionScope;
private File testDirectory;
-
+
@Override
protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
{
@@ -69,6 +75,7 @@ public class PomConstructionWithSettingsTest
testDirectory = new File( getBasedir(), BASE_POM_DIR );
projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class );
repositorySystem = lookup( RepositorySystem.class );
+ sessionScope = lookup( SessionScope.class );
}
@Override
@@ -94,6 +101,7 @@ public class PomConstructionWithSettingsTest
throws Exception
{
PomTestWrapper pom = buildPom( "test-pom-and-settings-interpolation" );
+
assertEquals( "applied", pom.getValue( "properties/settingsProfile" ) );
assertEquals( "applied", pom.getValue( "properties/pomProfile" ) );
assertEquals( "settings", pom.getValue( "properties/pomVsSettings" ) );
@@ -138,6 +146,15 @@ public class PomConstructionWithSettingsTest
repoSession.setLocalRepositoryManager(
new SimpleLocalRepositoryManagerFactory().newInstance( repoSession, localRepo ) );
config.setRepositorySession( repoSession );
+
+ MavenExecutionRequest request = new DefaultMavenExecutionRequest();
+ request.setActiveProfiles( settings.getActiveProfiles() );
+
+ sessionScope.enter();
+ sessionScope.seed( MavenSession.class,
+ new MavenSession( getContainer(),
+ repoSession,
+ new DefaultMavenExecutionRequest(), null ) );
return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, config ).getProject() );
}
diff --git a/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java b/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java
index d4461d8..48848c9 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java
@@ -31,7 +31,7 @@ public final class Features
{
}
- private static final Feature BUILDCONSUMER = new Feature( "maven.experimental.buildconsumer", "false" );
+ private static final Feature BUILDCONSUMER = new Feature( "maven.experimental.buildconsumer", "true" );
public static Feature buildConsumer()
{
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 6d2bb7e..fe3904b 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -23,6 +23,8 @@ import static org.apache.maven.model.building.Result.error;
import static org.apache.maven.model.building.Result.newResult;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PipedInputStream;
@@ -36,10 +38,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import javax.inject.Inject;
import javax.inject.Named;
@@ -54,7 +52,6 @@ import javax.xml.transform.stream.StreamResult;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.building.FileSource;
import org.apache.maven.feature.Features;
import org.apache.maven.model.Activation;
import org.apache.maven.model.Build;
@@ -304,6 +301,20 @@ public class DefaultModelBuilder
if ( inputModel == null )
{
inputModel = readModel( request.getModelSource(), request.getPomFile(), request, problems );
+
+ if ( Features.buildConsumer().isActive() && request.isTransformPom() )
+ {
+ try
+ {
+ inputModel = modelProcessor.read( transformData( request.getPomFile() ), null );
+
+ inputModel.setPomFile( request.getPomFile() );
+ }
+ catch ( IOException | TransformerException | SAXException | ParserConfigurationException e )
+ {
+ problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V37 ).setException( e ) );
+ }
+ }
}
problems.setRootModel( inputModel );
@@ -763,78 +774,80 @@ public class DefaultModelBuilder
private void assembleInheritance( List<ModelData> lineage, ModelBuildingRequest request,
ModelProblemCollector problems )
{
- for ( int i = lineage.size() - 2; i >= 1; i-- )
+ for ( int i = lineage.size() - 2; i >= 0; i-- )
{
Model parent = lineage.get( i + 1 ).getModel();
Model child = lineage.get( i ).getModel();
inheritanceAssembler.assembleModelInheritance( child, parent, request, problems );
}
-
- // re-read model from file
- if ( Features.buildConsumer().isActive() && request.isTransformPom() )
- {
- try
- {
- Model parent = lineage.get( 1 ).getModel();
-
- Model child = modelProcessor.read( transformData( lineage.get( 0 ) ), null );
- inheritanceAssembler.assembleModelInheritance( child, parent, request, problems );
-
- // sync pomfile, is transient
- child.setPomFile( lineage.get( 0 ).getModel().getPomFile() );
- // overwrite child
- lineage.get( 0 ).setModel( child );
- }
- catch ( IOException | TransformerException | SAXException | ParserConfigurationException e )
- {
- problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V37 ).setException( e ) );
- }
- }
- else
- {
- Model parent = lineage.get( 1 ).getModel();
- Model child = lineage.get( 0 ).getModel();
- inheritanceAssembler.assembleModelInheritance( child, parent, request, problems );
- }
}
- private InputStream transformData( ModelData modelData )
+ private InputStream transformData( File pomFile )
throws IOException, TransformerException, SAXException, ParserConfigurationException
{
+// return modelData.getSource().getInputStream();
final TransformerFactory transformerFactory = Factories.newTransformerFactory() ;
final PipedOutputStream pipedOutputStream = new PipedOutputStream();
final PipedInputStream pipedInputStream = new PipedInputStream( pipedOutputStream );
// Should always be FileSource for reactor poms
- FileSource source = (FileSource) modelData.getSource();
+// FileSource source = (FileSource) modelData.getSource();
- // System.out.println( "transforming " + source.getFile() );
+// System.out.println( "transforming " + source.getFile() );
final SAXSource transformSource =
- new SAXSource( buildPomXMLFilterFactory.get().get( source.getFile().toPath() ),
- new org.xml.sax.InputSource( modelData.getSource().getInputStream() ) );
-
- final StreamResult result = new StreamResult( pipedOutputStream );
+ new SAXSource( buildPomXMLFilterFactory.get().get( pomFile.toPath() ),
+ new org.xml.sax.InputSource( new FileInputStream( pomFile ) ) );
+
+ FilterOutputStream fos = new FilterOutputStream( pipedOutputStream )
+ {
+ @Override
+ public void write( byte[] b, int off, int len )
+ throws IOException
+ {
+ System.out.write( b, off, len );
+ super.write( b, off, len );
+ }
+ }
+ ;
+ final StreamResult result = new StreamResult( fos );
- final Callable<Void> callable = () ->
+//// final Callable<Void> callable = () ->
+//// {
+//// try ( PipedOutputStream out = pipedOutputStream )
+//// {
+//// transformerFactory.newTransformer().transform( transformSource, result );
+//// }
+//// return null;
+//// };
+////
+//// ExecutorService executorService = Executors.newSingleThreadExecutor();
+//// try
+//// {
+//// executorService.submit( callable ).get();
+//// }
+//// catch ( InterruptedException | ExecutionException e )
+//// {
+//// throw new TransformerException( "Failed to transform pom", e );
+//// }
+ final Runnable runnable = new Runnable()
{
- try ( PipedOutputStream out = pipedOutputStream )
+ @Override
+ public void run()
{
- transformerFactory.newTransformer().transform( transformSource, result );
+ try ( PipedOutputStream out = pipedOutputStream )
+ {
+ transformerFactory.newTransformer().transform( transformSource, result );
+ }
+ catch ( TransformerException | IOException e )
+ {
+ throw new RuntimeException( e );
+ }
}
- return null;
};
- ExecutorService executorService = Executors.newSingleThreadExecutor();
- try
- {
- executorService.submit( callable ).get();
- }
- catch ( InterruptedException | ExecutionException e )
- {
- throw new TransformerException( "Failed to transform pom", e );
- }
+ new Thread( runnable ).start();
return pipedInputStream;
}
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
index 3e07c57..bf6b088 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
@@ -22,6 +22,7 @@ package org.apache.maven.model.validation;
import java.io.InputStream;
import java.util.List;
+import org.apache.maven.feature.Features;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingRequest;
@@ -415,11 +416,18 @@ public class DefaultModelValidatorTest
{
SimpleProblemCollector result = validateRaw( "incomplete-parent.xml" );
- assertViolations( result, 3, 0, 0 );
+ if ( Features.buildConsumer().isActive() )
+ {
+ assertViolations( result, 2, 0, 0 );
+ }
+ else
+ {
+ assertViolations( result, 3, 0, 0 );
+ assertTrue( result.getFatals().get( 2 ).contains( "parent.version" ) );
+ }
assertTrue( result.getFatals().get( 0 ).contains( "parent.groupId" ) );
assertTrue( result.getFatals().get( 1 ).contains( "parent.artifactId" ) );
- assertTrue( result.getFatals().get( 2 ).contains( "parent.version" ) );
}
public void testHardCodedSystemPath()
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java
index 633c533..e563032 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java
@@ -1,7 +1,5 @@
package org.apache.maven.xml.sax.filter;
-import java.util.ArrayDeque;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -21,10 +19,8 @@ import java.util.ArrayDeque;
* under the License.
*/
-import java.util.ArrayList;
+import java.util.ArrayDeque;
import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Queue;
@@ -142,7 +138,7 @@ abstract class AbstractEventXMLFilter extends AbstractSAXFilter
}
// not with streams due to checked SAXException
- while( !saxEvents.isEmpty() )
+ while ( !saxEvents.isEmpty() )
{
saxEvents.poll().execute();
}
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java
index 9cb6ff2..2531798 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java
@@ -34,6 +34,8 @@ import org.xml.sax.SAXException;
* <p>
* Transforms relativePath to version.
* We could decide to simply allow {@code <parent/>}, but let's require the GA for now for checking
+ * This filter does NOT remove the relativePath (which is done by {@link RelativePathXMLFilter}, it will only
+ * optionally include the version based on the path
* </p>
*
* @author Robert Scholte
@@ -87,12 +89,6 @@ class ParentXMLFilter
{
return state;
}
-
- @Override
- protected boolean acceptEvent( String eventState )
- {
- return !( "relativePath".equals( eventState ) && resolvedParent.isPresent() );
- }
@Override
public void startElement( String uri, final String localName, String qName, Attributes atts )
diff --git a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java
index 8f25c10..f98f4dd 100644
--- a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java
+++ b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java
@@ -99,6 +99,7 @@ public class ParentXMLFilterTest extends AbstractXMLFilterTests
String expected = "<parent>"
+ "<groupId>GROUPID</groupId>"
+ "<artifactId>ARTIFACTID</artifactId>"
+ + "<relativePath>RELATIVEPATH</relativePath>"
+ "<version>1.0.0</version>"
+ "</parent>";
@@ -137,6 +138,7 @@ public class ParentXMLFilterTest extends AbstractXMLFilterTests
String expected = "<parent>"
+ "<groupId>GROUPID</groupId>"
+ "<artifactId>ARTIFACTID</artifactId>"
+ + "<relativePath>RELATIVEPATH</relativePath>"
+ "<version>1.0.0</version>"
+ "</parent>";
@@ -156,6 +158,7 @@ public class ParentXMLFilterTest extends AbstractXMLFilterTests
String expected = "<relativePath:parent xmlns:relativePath=\"relativePath\">"
+ "<relativePath:groupId>GROUPID</relativePath:groupId>"
+ "<relativePath:artifactId>ARTIFACTID</relativePath:artifactId>"
+ + "<relativePath:relativePath>RELATIVEPATH</relativePath:relativePath>"
+ "<relativePath:version>1.0.0</relativePath:version>"
+ "</relativePath:parent>";