This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-artifact-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 74bfb03 use ArtifactHandlerManager to avoid null ArtifactHandlers
74bfb03 is described below
commit 74bfb0318cc6451b82d9e30457c0a5dcdf09d39c
Author: Hervé Boutemy <[email protected]>
AuthorDate: Sun Nov 14 16:07:15 2021 +0100
use ArtifactHandlerManager to avoid null ArtifactHandlers
---
.../plugins/artifact/buildinfo/AbstractBuildinfoMojo.java | 6 +++++-
.../maven/plugins/artifact/buildinfo/BuildInfoWriter.java | 12 ++++++++++--
.../maven/plugins/artifact/buildinfo/CompareMojo.java | 15 ++++++++++++---
.../artifact/buildinfo/ReferenceBuildinfoUtil.java | 9 +++++++--
4 files changed, 34 insertions(+), 8 deletions(-)
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
index 07ed000..ebc6e5d 100644
---
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
+++
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.artifact.buildinfo;
import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
@@ -120,6 +121,9 @@ public abstract class AbstractBuildinfoMojo
@Component
private ToolchainManager toolchainManager;
+ @Component
+ protected ArtifactHandlerManager artifactHandlerManager;
+
@Override
public void execute()
throws MojoExecutionException
@@ -217,7 +221,7 @@ public abstract class AbstractBuildinfoMojo
try ( PrintWriter p = new PrintWriter( new BufferedWriter(
new OutputStreamWriter( new FileOutputStream( buildinfoFile ),
StandardCharsets.UTF_8 ) ) ) )
{
- BuildInfoWriter bi = new BuildInfoWriter( getLog(), p, mono );
+ BuildInfoWriter bi = new BuildInfoWriter( getLog(), p, mono,
artifactHandlerManager );
bi.setIgnoreJavadoc( ignoreJavadoc );
bi.setIgnore( ignore );
bi.setToolchain( getToolchain() );
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
index 4269831..77e1ce3 100644
---
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
+++
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
@@ -29,6 +29,7 @@ import java.util.Set;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
@@ -43,17 +44,19 @@ class BuildInfoWriter
private final Log log;
private final PrintWriter p;
private final boolean mono;
+ private final ArtifactHandlerManager artifactHandlerManager;
private final Map<Artifact, String> artifacts = new LinkedHashMap<>();
private int projectCount = -1;
private boolean ignoreJavadoc = true;
private Set<String> ignore;
private Toolchain toolchain;
- BuildInfoWriter( Log log, PrintWriter p, boolean mono )
+ BuildInfoWriter( Log log, PrintWriter p, boolean mono,
ArtifactHandlerManager artifactHandlerManager )
{
this.log = log;
this.p = p;
this.mono = mono;
+ this.artifactHandlerManager = artifactHandlerManager;
}
void printHeader( MavenProject project, MavenProject aggregate, boolean
reproducible )
@@ -173,7 +176,7 @@ class BuildInfoWriter
int n = 0;
artifacts.put( new DefaultArtifact( project.getGroupId(),
project.getArtifactId(), project.getVersion(), null,
- "pom", "", null ),
+ "pom", "",
artifactHandlerManager.getArtifactHandler( "pom" ) ),
prefix + n );
printFile( prefix + n++, project.getFile(), project.getArtifactId() +
'-' + project.getVersion() + ".pom" );
@@ -214,6 +217,11 @@ class BuildInfoWriter
File artifactFile = artifact.getFile();
if ( artifactFile.isDirectory() )
{
+ if ( "pom".equals( artifact.getType() ) )
+ {
+ // ignore .pom files: they should not be treated as Artifacts
+ return;
+ }
// edge case found in a distribution module with default packaging
and skip set for
// m-jar-p: should use pom packaging instead
throw new MojoExecutionException( "Artifact " + artifact.getId() +
" points to a directory: "
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
index 055fdb5..42a754d 100644
--- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
+++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
@@ -130,8 +130,8 @@ public class CompareMojo
{
RemoteRepository repo = createReferenceRepo();
- ReferenceBuildinfoUtil rmb = new ReferenceBuildinfoUtil( getLog(),
referenceDir, artifacts,
-
artifactFactory, repoSystem, repoSession );
+ ReferenceBuildinfoUtil rmb = new ReferenceBuildinfoUtil( getLog(),
referenceDir, artifacts, artifactFactory,
+ repoSystem,
repoSession, artifactHandlerManager );
return rmb.downloadOrCreateReferenceBuildinfo( repo, project,
buildinfoFile, mono );
}
@@ -261,6 +261,12 @@ public class CompareMojo
// notice: actual file name may have been defined in pom
// reference file name is taken from repository format
File reference = new File( referenceDir, getRepositoryFilename( a ) );
+ if ( ( actual == null ) || ( reference == null ) )
+ {
+ return "missing file for " + a.getId() + " reference = "
+ + ( reference == null ? "null" : relative( reference ) ) + "
actual = "
+ + ( actual == null ? "null" : relative( actual ) );
+ }
return "diffoscope " + relative( reference ) + " " + relative( actual
);
}
@@ -272,7 +278,10 @@ public class CompareMojo
private String relative( File file )
{
- return file.getPath().substring(
getExecutionRoot().getBasedir().getPath().length() + 1 );
+ File basedir = getExecutionRoot().getBasedir();
+ int length = basedir.getPath().length();
+ String path = file.getPath();
+ return path.substring( length + 1 );
}
private static String findPrefix( Properties reference, String
actualFilename )
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
index c67e357..1203922 100644
---
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
+++
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.artifact.buildinfo;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;
@@ -88,9 +89,12 @@ class ReferenceBuildinfoUtil
private final RepositorySystemSession repoSession;
+ private final ArtifactHandlerManager artifactHandlerManager;
+
ReferenceBuildinfoUtil( Log log, File referenceDir, Map<Artifact, String>
artifacts,
ArtifactFactory artifactFactory,
RepositorySystem repoSystem,
- RepositorySystemSession repoSession )
+ RepositorySystemSession repoSession,
+ ArtifactHandlerManager
artifactHandlerManager )
{
this.log = log;
this.referenceDir = referenceDir;
@@ -98,6 +102,7 @@ class ReferenceBuildinfoUtil
this.artifactFactory = artifactFactory;
this.repoSystem = repoSystem;
this.repoSession = repoSession;
+ this.artifactHandlerManager = artifactHandlerManager;
}
File downloadOrCreateReferenceBuildinfo( RemoteRepository repo,
MavenProject project, File buildinfoFile,
@@ -149,7 +154,7 @@ class ReferenceBuildinfoUtil
new PrintWriter( new BufferedWriter( new OutputStreamWriter(
new FileOutputStream( referenceBuildinfo ),
StandardCharsets.UTF_8 ) ) ) )
{
- BuildInfoWriter bi = new BuildInfoWriter( log, p, mono );
+ BuildInfoWriter bi = new BuildInfoWriter( log, p, mono,
artifactHandlerManager );
if ( javaVersion != null || osName != null )
{