Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #326 Migrate to using Maven 3 APIs and Aether for dependency resolution #327

Merged
merged 1 commit into from Apr 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 7 additions & 6 deletions pom.xml
Expand Up @@ -111,7 +111,7 @@
</distributionManagement>

<properties>
<mavenVersion>2.2.1</mavenVersion>
<mavenVersion>3.5.4</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,8 @@
import java.util.SortedMap;
import java.util.SortedSet;
import org.codehaus.mojo.license.api.DependenciesToolException;
import org.eclipse.aether.resolution.ArtifactResolutionException;
import org.eclipse.aether.transfer.ArtifactNotFoundException;

/**
* Abstract mojo for all third-party mojos.
Expand Down Expand Up @@ -592,14 +592,6 @@ 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.
*/
Expand Down Expand Up @@ -881,7 +873,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 +883,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 @@ -83,14 +83,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 +100,12 @@ public abstract class AbstractLicensesXmlMojo
protected MavenProject project;

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

private Charset charset;

Expand Down
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 @@ -301,14 +300,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 @@ -437,10 +428,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 +564,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 +637,4 @@ public String getEncoding()
return encoding;
}


}
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
Expand Up @@ -45,6 +45,7 @@
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeMap;
import org.eclipse.aether.repository.RemoteRepository;

/**
* Default implementation of the {@link org.codehaus.mojo.license.api.ThirdPartyHelper}.
Expand All @@ -71,14 +72,14 @@ public class DefaultThirdPartyHelper
private final ThirdPartyTool thirdPartyTool;

/**
* Local repository used.
* List of remote repositories. Same as remoteRepositories, just a different API.
*/
private final ArtifactRepository localRepository;
private final List<ArtifactRepository> remoteRepositoriesCoreApi;

/**
* List of remote repositories.
*/
private final List<ArtifactRepository> remoteRepositories;
private final List<RemoteRepository> remoteRepositories;

/**
* Current maven project.
Expand Down Expand Up @@ -113,23 +114,23 @@ public class DefaultThirdPartyHelper
* @param verbose Verbose flag
* @param dependenciesTool tool to load dependencies
* @param thirdPartyTool tool to load third-parties descriptors
* @param localRepository maven local repository
* @param remoteRepositoriesCoreApi maven remote repositories, in the core api format
* @param remoteRepositories maven remote repositories
* @param log logger
*/
// CHECKSTYLE_OFF: ParameterNumber
public DefaultThirdPartyHelper( MavenProject project, String encoding, boolean verbose,
DependenciesTool dependenciesTool, ThirdPartyTool thirdPartyTool,
ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories,
Log log )
List<ArtifactRepository> remoteRepositoriesCoreApi,
List<RemoteRepository> remoteRepositories, Log log )
{
// CHECKSTYLE_ON: ParameterNumber
this.project = project;
this.encoding = encoding;
this.verbose = verbose;
this.dependenciesTool = dependenciesTool;
this.thirdPartyTool = thirdPartyTool;
this.localRepository = localRepository;
this.remoteRepositoriesCoreApi = remoteRepositoriesCoreApi;
this.remoteRepositories = remoteRepositories;
this.log = log;
this.thirdPartyTool.setVerbose( verbose );
Expand All @@ -153,8 +154,8 @@ public SortedMap<String, MavenProject> getArtifactCache()
public SortedMap<String, MavenProject> loadDependencies( MavenProjectDependenciesConfigurator configuration,
ResolvedProjectDependencies dependencyArtifacts )
{
return dependenciesTool.loadProjectDependencies( dependencyArtifacts, configuration, localRepository,
remoteRepositories, getArtifactCache() );
return dependenciesTool.loadProjectDependencies( dependencyArtifacts, configuration,
remoteRepositoriesCoreApi, getArtifactCache() );
}

/**
Expand All @@ -167,8 +168,7 @@ public SortedProperties loadThirdPartyDescriptorForUnsafeMapping( Set<Artifact>
throws ThirdPartyToolException, IOException
{
return thirdPartyTool.loadThirdPartyDescriptorsForUnsafeMapping( topLevelDependencies, encoding, projects,
unsafeDependencies, licenseMap,
localRepository, remoteRepositories );
unsafeDependencies, licenseMap, remoteRepositories );
}

/**
Expand Down