Skip to content

Commit

Permalink
ISSUE-326: Migrate to using Maven 3 APIs and Aether for dependency re…
Browse files Browse the repository at this point in the history
…solution
  • Loading branch information
srdo committed Apr 20, 2019
1 parent 219fed4 commit c985d30
Show file tree
Hide file tree
Showing 19 changed files with 247 additions and 156 deletions.
13 changes: 7 additions & 6 deletions pom.xml
Expand Up @@ -111,7 +111,7 @@
</distributionManagement>

<properties>
<mavenVersion>2.2.1</mavenVersion>
<mavenVersion>3.1.0</mavenVersion>
<mojo.java.target>1.7</mojo.java.target>

<processorVersion>1.3</processorVersion>
Expand All @@ -132,6 +132,7 @@

<pluginPluginVersion>3.5.1</pluginPluginVersion>
<plexusComponentVersion>1.7.1</plexusComponentVersion>
<maven-resolver.version>1.3.3</maven-resolver.version>
</properties>

<dependencyManagement>
Expand All @@ -156,13 +157,13 @@
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<artifactId>maven-artifact</artifactId>
<version>${mavenVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>${mavenVersion}</version>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-api</artifactId>
<version>${maven-resolver.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
Expand Down Expand Up @@ -255,7 +256,7 @@
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-9-stable-1</version>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>

Expand Down
Expand Up @@ -19,5 +19,5 @@
# <http://www.gnu.org/licenses/lgpl-3.0.html>.
# #L%
###
invoker.goals=clean validate
invoker.goals=clean validate -e
invoker.failureBehavior=fail-at-end
2 changes: 1 addition & 1 deletion src/it/add-third-party-global-db/invoker.properties
Expand Up @@ -19,5 +19,5 @@
# <http://www.gnu.org/licenses/lgpl-3.0.html>.
# #L%
###
invoker.goals=clean package license:add-third-party
invoker.goals=clean package license:add-third-party -e
invoker.failureBehavior=fail-fast
Expand Up @@ -19,6 +19,6 @@
# <http://www.gnu.org/licenses/lgpl-3.0.html>.
# #L%
###
invoker.goals=clean license:aggregate-add-third-party
invoker.goals=clean license:aggregate-add-third-party -e
invoker.failureBehavior=fail-at-end
invoker.maven.version = 3.0 +
Expand Up @@ -19,5 +19,5 @@
# <http://www.gnu.org/licenses/lgpl-3.0.html>.
# #L%
###
invoker.goals=clean license:aggregate-add-third-party@missing-file-only license:aggregate-add-third-party@missing-file-url-only license:aggregate-add-third-party@missing-file-both
invoker.goals=clean license:aggregate-add-third-party@missing-file-only license:aggregate-add-third-party@missing-file-url-only license:aggregate-add-third-party@missing-file-both -e
invoker.failureBehavior=fail-fast
2 changes: 1 addition & 1 deletion src/it/third-party-report-global-db/invoker.properties
Expand Up @@ -19,5 +19,5 @@
# <http://www.gnu.org/licenses/lgpl-3.0.html>.
# #L%
###
invoker.goals=clean site:site
invoker.goals=clean site:site -e
invoker.failureBehavior=fail-fast
Expand Up @@ -27,8 +27,6 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
Expand Down Expand Up @@ -59,6 +57,9 @@
import java.util.SortedMap;
import java.util.SortedSet;
import org.codehaus.mojo.license.api.DependenciesToolException;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.resolution.ArtifactResolutionException;
import org.eclipse.aether.transfer.ArtifactNotFoundException;

/**
* Abstract mojo for all third-party mojos.
Expand Down Expand Up @@ -592,20 +593,18 @@ public abstract class AbstractAddThirdPartyMojo
@Parameter( property = "localRepository", required = true, readonly = true )
protected ArtifactRepository localRepository;

/**
* Remote repositories used for the project.
*
* @since 1.0.0
*/
@Parameter( property = "project.remoteArtifactRepositories", required = true, readonly = true )
protected List<ArtifactRepository> remoteRepositories;

/**
* The set of dependencies for the current project, used to locate license databases.
*/
@Parameter( property = "project.artifacts", required = true, readonly = true )
protected Set<Artifact> dependencies;

/**
* Repository system session used by Aether.
*/
@Parameter( defaultValue = "${repositorySystemSession}", required = true, readonly = true )
private RepositorySystemSession aetherRepoSession;

// ----------------------------------------------------------------------
// Plexus components
// ----------------------------------------------------------------------
Expand Down Expand Up @@ -872,6 +871,17 @@ public void setExcludedLicenses( String excludedLicenses ) throws MojoExecutionE
this.excludedLicenses = new ExcludedLicenses( excludedLicenses );
}

/**
* Set repo session in the components that need it.
* @param session The repository system session
*/
public void setAetherRepoSession( RepositorySystemSession session )
{
aetherRepoSession = session;
dependenciesTool.setAetherRepoSession( aetherRepoSession );
thirdPartyTool.setAetherRepoSession( aetherRepoSession );
}

// ----------------------------------------------------------------------
// Protected Methods
// ----------------------------------------------------------------------
Expand All @@ -881,7 +891,8 @@ protected ThirdPartyHelper getHelper()
if ( helper == null )
{
helper = new DefaultThirdPartyHelper( getProject(), getEncoding(), isVerbose(), dependenciesTool,
thirdPartyTool, localRepository, remoteRepositories, getLog() );
thirdPartyTool, getProject().getRemoteArtifactRepositories(),
getProject().getRemoteProjectRepositories(), getLog() );
}
return helper;
}
Expand All @@ -890,7 +901,7 @@ void resolveUnsafeDependenciesFromArtifact( String groupId, String artifactId, S
throws ArtifactNotFoundException, IOException, ArtifactResolutionException, MojoExecutionException
{
File missingLicensesFromArtifact = thirdPartyTool.resolveMissingLicensesDescriptor( groupId, artifactId,
version, localRepository, remoteRepositories );
version, getProject().getRemoteProjectRepositories() );
resolveUnsafeDependenciesFromFile( missingLicensesFromArtifact );
}

Expand Down
Expand Up @@ -79,14 +79,6 @@ public abstract class AbstractDownloadLicensesMojo
// Mojo Parameters
// ----------------------------------------------------------------------

/**
* Location of the local repository.
*
* @since 1.0
*/
@Parameter( defaultValue = "${localRepository}", readonly = true )
protected ArtifactRepository localRepository;

/**
* List of Remote Repositories used by the resolver
*
Expand Down
Expand Up @@ -40,6 +40,7 @@
import org.codehaus.mojo.license.download.LicenseSummaryWriter;
import org.codehaus.mojo.license.download.LicensedArtifactResolver;
import org.codehaus.mojo.license.download.ProjectLicenseInfo;
import org.eclipse.aether.RepositorySystemSession;

/**
* A common parent for {@link LicensesXmlInsertVersionsMojo} and {@link AbstractDownloadLicensesMojo}.
Expand Down Expand Up @@ -83,14 +84,6 @@ public abstract class AbstractLicensesXmlMojo
@Parameter( property = "licensesOutputFileEncoding", defaultValue = "${project.build.sourceEncoding}" )
private String licensesOutputFileEncoding;

/**
* Location of the local repository.
*
* @since 1.0
*/
@Parameter( defaultValue = "${localRepository}", readonly = true )
protected ArtifactRepository localRepository;

/**
* List of Remote Repositories used by the resolver
*
Expand All @@ -108,12 +101,18 @@ public abstract class AbstractLicensesXmlMojo
protected MavenProject project;

/**
* Dependencies tool.
* Repository system session used by Aether.
*/
@Parameter( defaultValue = "${repositorySystemSession}", required = true, readonly = true )
private RepositorySystemSession aetherRepoSession;

/**
* Licensed artifact resolver.
*
* @since 1.0
*/
@Component
protected LicensedArtifactResolver dependenciesTool;
protected LicensedArtifactResolver licensedArtifactResolver;

private Charset charset;

Expand Down Expand Up @@ -184,4 +183,14 @@ protected void writeLicenseSummary( List<ProjectLicenseInfo> deps, File licenses
writeVersions );
}

/**
* Set repo session in the components that need it.
* @param session The repository system session
*/
public void setAetherRepoSession( RepositorySystemSession session )
{
aetherRepoSession = session;
licensedArtifactResolver.setAetherRepoSession( aetherRepoSession );
}

}
Expand Up @@ -23,7 +23,6 @@
*/

import org.apache.commons.collections.CollectionUtils;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.doxia.siterenderer.Renderer;
Expand Down Expand Up @@ -64,6 +63,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
import org.codehaus.mojo.license.api.ResolvedProjectDependencies;
import org.eclipse.aether.RepositorySystemSession;

/**
* Base class for third-party reports.
Expand Down Expand Up @@ -301,14 +301,6 @@ public abstract class AbstractThirdPartyReportMojo extends AbstractMavenReport
@Parameter( property = "license.encoding", defaultValue = "${project.build.sourceEncoding}" )
private String encoding;

/**
* Local Repository.
*
* @since 1.1
*/
@Parameter( property = "localRepository", required = true, readonly = true )
private ArtifactRepository localRepository;

/**
* The Maven Project.
*
Expand Down Expand Up @@ -353,6 +345,12 @@ public abstract class AbstractThirdPartyReportMojo extends AbstractMavenReport
@Component
private ThirdPartyTool thirdPartyTool;

/**
* Repository system session used by Aether.
*/
@Parameter( defaultValue = "${repositorySystemSession}", required = true, readonly = true )
private RepositorySystemSession aetherRepoSession;

/**
* A URL returning a plain text file that contains include/exclude artifact filters in the following format:
* <pre>
Expand Down Expand Up @@ -437,10 +435,6 @@ protected void executeReport( Locale locale )
{
throw new MavenReportException( e.getMessage(), e );
}
catch ( InvalidDependencyVersionException e )
{
throw new MavenReportException( e.getMessage(), e );
}
catch ( ArtifactNotFoundException e )
{
throw new MavenReportException( e.getMessage(), e );
Expand Down Expand Up @@ -577,7 +571,7 @@ Collection<ThirdPartyDetails> createThirdPartyDetails( MavenProject project, boo
ThirdPartyHelper thirdPartyHelper =
new DefaultThirdPartyHelper( project, encoding, verbose,
dependenciesTool, thirdPartyTool,
localRepository, project.getRemoteArtifactRepositories(), getLog() );
project.getRemoteArtifactRepositories(), project.getRemoteProjectRepositories(), getLog() );
// load dependencies of the project
SortedMap<String, MavenProject> projectDependencies = thirdPartyHelper.loadDependencies( this,
loadedDependencies );
Expand Down Expand Up @@ -650,5 +644,15 @@ public String getEncoding()
return encoding;
}

/**
* Set repo session in the components that need it.
* @param session The repository system session
*/
public void setAetherRepoSession( RepositorySystemSession session )
{
aetherRepoSession = session;
dependenciesTool.setAetherRepoSession( aetherRepoSession );
thirdPartyTool.setAetherRepoSession( aetherRepoSession );
}

}
Expand Up @@ -442,8 +442,7 @@ void initFromMojo( AggregatorAddThirdPartyMojo mojo, MavenProject mavenProject,
resolvedOverrideUrl = mojo.resolvedOverrideUrl;
missingLicensesFileArtifact = mojo.missingLicensesFileArtifact;
localRepository = mojo.localRepository;
remoteRepositories = mavenProject.getRemoteArtifactRepositories();
dependencies = new HashSet<>( mavenProject.getDependencies() );
dependencies = new HashSet<>( mavenProject.getDependencyArtifacts() );
licenseMerges = mojo.licenseMerges;
licenseMergesFile = mojo.licenseMergesFile;
includedLicenses = mojo.includedLicenses;
Expand Down
Expand Up @@ -115,9 +115,9 @@ protected Map<String, LicensedArtifact> getDependencies()

for ( MavenProject p : reactorProjects )
{
dependenciesTool.loadProjectDependencies( new ResolvedProjectDependencies( p.getArtifacts(),
licensedArtifactResolver.loadProjectDependencies( new ResolvedProjectDependencies( p.getArtifacts(),
p.getDependencyArtifacts() ),
this, localRepository, remoteRepositories, result );
this, remoteRepositories, result );
}
return result;
}
Expand Down
Expand Up @@ -86,9 +86,9 @@ protected boolean isSkip()
protected Map<String, LicensedArtifact> getDependencies()
{
final Map<String, LicensedArtifact> result = new TreeMap<>();
dependenciesTool.loadProjectDependencies(
licensedArtifactResolver.loadProjectDependencies(
new ResolvedProjectDependencies( project.getArtifacts(), project.getDependencyArtifacts() ),
this, localRepository, remoteRepositories, result );
this, remoteRepositories, result );
return result;
}

Expand Down
Expand Up @@ -137,9 +137,9 @@ public ArtifactFilters getArtifactFilters()
}
};
final Map<String, LicensedArtifact> resolvedDeps = new TreeMap<String, LicensedArtifact>();
dependenciesTool.loadProjectDependencies(
licensedArtifactResolver.loadProjectDependencies(
new ResolvedProjectDependencies( project.getArtifacts(), project.getDependencyArtifacts() ),
config, localRepository, remoteRepositories, resolvedDeps );
config, remoteRepositories, resolvedDeps );
final Map<String, LicensedArtifact> resolvedDepsMap = new HashMap<>( resolvedDeps.size() );
for ( LicensedArtifact dep : resolvedDeps.values() )
{
Expand Down

0 comments on commit c985d30

Please sign in to comment.