From c9362d3f23f950bb6987c63c67b06528de3ce100 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Thu, 23 Jan 2020 12:50:42 +0100 Subject: [PATCH] Initial PoC of XMvn toolchain manager --- .../aether/XMvnMavenLifecycleParticipant.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java index 0e360488..ddd6151b 100644 --- a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java +++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java @@ -15,10 +15,15 @@ */ package org.fedoraproject.xmvn.connector.aether; +import java.util.Collections; + import org.apache.maven.AbstractMavenLifecycleParticipant; import org.apache.maven.MavenExecutionException; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenSession; +import org.apache.maven.project.MavenProject; +import org.apache.maven.toolchain.MisconfiguredToolchainException; +import org.apache.maven.toolchain.ToolchainManagerPrivate; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.Logger; @@ -42,6 +47,9 @@ public class XMvnMavenLifecycleParticipant @Requirement( role = XMvnMojoExecutionListener.class ) private XMvnMojoExecutionListener mojoExecutionListener; + @Requirement + private ToolchainManagerPrivate toolchainManager; + @Override public void afterSessionStart( MavenSession session ) throws MavenExecutionException @@ -61,4 +69,34 @@ public class XMvnMavenLifecycleParticipant chainedListener.addExecutionListener( reportGenerator ); request.setExecutionListener( chainedListener ); } + + @Override + public void afterProjectsRead( MavenSession session ) + throws MavenExecutionException + { + MavenProject currentProject = session.getCurrentProject(); + + try + { + for ( var toolchain : toolchainManager.getToolchainsForType( "jdk", session ) ) + { + if ( toolchain.matchesRequirements( Collections.singletonMap( "xmvn", "xmvn" ) ) ) + { + for ( var project : session.getAllProjects() ) + { + session.setCurrentProject( project ); + toolchainManager.storeToolchainToBuildContext( toolchain, session ); + } + } + } + } + catch ( MisconfiguredToolchainException e ) + { + throw new MavenExecutionException( "Unable to configure toolchains", e ); + } + finally + { + session.setCurrentProject( currentProject ); + } + } } -- 2.21.0