[MNG-7063] Infinite loop using Shade plugin and JUnit 5 dependency

This commit is contained in:
rfscholte 2021-02-20 20:14:36 +01:00
parent a515fbe04e
commit 8ceb6c6e99
3 changed files with 34 additions and 27 deletions

View File

@ -279,7 +279,11 @@ private ModelBuildingRequest getModelBuildingRequest( InternalConfig config )
request.setUserProperties( configuration.getUserProperties() );
request.setBuildStartTime( configuration.getBuildStartTime() );
request.setModelResolver( resolver );
request.setModelCache( DefaultModelCache.newInstance( config.session ) );
// this is a hint that we want to build 1 file, so don't cache. See MNG-7063
if ( config.modelPool != null )
{
request.setModelCache( DefaultModelCache.newInstance( config.session ) );
}
request.setTransformerContextBuilder( config.transformerContextBuilder );
return request;

View File

@ -29,6 +29,7 @@
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
import org.apache.maven.test.PlexusTest;
import org.codehaus.plexus.PlexusContainer;
import org.eclipse.aether.DefaultRepositoryCache;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@ -171,6 +172,7 @@ protected void initRepoSession( ProjectBuildingRequest request )
{
File localRepo = new File( request.getLocalRepository().getBasedir() );
DefaultRepositorySystemSession repoSession = MavenRepositorySystemUtils.newSession();
repoSession.setCache( new DefaultRepositoryCache() );
repoSession.setLocalRepositoryManager( new LegacyLocalRepositoryManager( localRepo ) );
request.setRepositorySession( repoSession );
}

View File

@ -307,33 +307,34 @@ public void testBuildParentVersionRangeExternallyWithChildVersionExpression() th
assertThat( e.getMessage(), containsString( "Version must be a constant" ) );
}
/**
* Ensure that when re-reading a pom, it should not use the cached Model
*
* @throws Exception
*/
@Test
public void rereadPom_mng7063() throws Exception
{
final Path pom = projectRoot.resolve( "pom.xml" );
try ( InputStream pomResource =
DefaultMavenProjectBuilderTest.class.getResourceAsStream( "/projects/reread/pom1.xml" ) )
/**
* Ensure that when re-reading a pom, it should not use the cached Model
*
* @throws Exception
*/
@Test
public void rereadPom_mng7063() throws Exception
{
Files.copy( pomResource, pom, StandardCopyOption.REPLACE_EXISTING );
final Path pom = projectRoot.resolve( "pom.xml" );
final ProjectBuildingRequest buildingRequest = newBuildingRequest();
try ( InputStream pomResource =
DefaultMavenProjectBuilderTest.class.getResourceAsStream( "/projects/reread/pom1.xml" ) )
{
Files.copy( pomResource, pom, StandardCopyOption.REPLACE_EXISTING );
}
MavenProject project = projectBuilder.build( pom.toFile(), buildingRequest ).getProject();
assertThat( project.getName(), is( "aid" ) ); // inherited from artifactId
try ( InputStream pomResource =
DefaultMavenProjectBuilderTest.class.getResourceAsStream( "/projects/reread/pom2.xml" ) )
{
Files.copy( pomResource, pom, StandardCopyOption.REPLACE_EXISTING );
}
project = projectBuilder.build( pom.toFile(), buildingRequest ).getProject();
assertThat( project.getName(), is( "PROJECT NAME" ) );
}
MavenProject project = getProject( pom.toFile() );
assertThat( project.getName(), is( "aid" ) ); // inherited from artifactId
try ( InputStream pomResource =
DefaultMavenProjectBuilderTest.class.getResourceAsStream( "/projects/reread/pom2.xml" ) )
{
Files.copy( pomResource, pom, StandardCopyOption.REPLACE_EXISTING );
}
project = getProject( pom.toFile() );
assertThat( project.getName(), is( "PROJECT NAME" ) );
}
}