Skip to content

Commit

Permalink
Fix mojohaus#326 Migrate to using Maven 3 APIs and Aether for depende…
Browse files Browse the repository at this point in the history
…ncy resolution
  • Loading branch information
srdo committed Apr 23, 2019
1 parent 4eff254 commit 1c5eeca
Show file tree
Hide file tree
Showing 19 changed files with 160 additions and 159 deletions.
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

0 comments on commit 1c5eeca

Please sign in to comment.