diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/Artifact.java b/api/maven-api-core/src/main/java/org/apache/maven/api/Artifact.java
index d645b89f0e52..5cb9279b9d93 100644
--- a/api/maven-api-core/src/main/java/org/apache/maven/api/Artifact.java
+++ b/api/maven-api-core/src/main/java/org/apache/maven/api/Artifact.java
@@ -33,7 +33,7 @@ public interface Artifact {
/**
* Returns a unique identifier for this artifact.
- * The identifier is composed of groupId, artifactId, version, classifier, extension.
+ * The identifier is composed of groupId, artifactId, extension, classifier, and version.
*
* @return the unique identifier
*/
@@ -43,7 +43,7 @@ default String key() {
+ getArtifactId()
+ ':'
+ getExtension()
- + (getClassifier().length() > 0 ? ":" + getClassifier() : "")
+ + (getClassifier().isEmpty() ? "" : ":" + getClassifier())
+ ':'
+ getVersion();
}
diff --git a/maven-bom/pom.xml b/maven-bom/pom.xml
index 086801759e1c..d1d669787120 100644
--- a/maven-bom/pom.xml
+++ b/maven-bom/pom.xml
@@ -97,6 +97,31 @@ under the License.
maven-api-core
${project.version}
+
+ org.apache.maven
+ maven-api-meta
+ ${project.version}
+
+
+ org.apache.maven
+ maven-api-model
+ ${project.version}
+
+
+ org.apache.maven
+ maven-api-settings
+ ${project.version}
+
+
+ org.apache.maven
+ maven-api-toolchain
+ ${project.version}
+
+
+ org.apache.maven
+ maven-api-xml
+ ${project.version}
+
org.apache.maven
maven-model-builder
diff --git a/maven-builder-support/src/main/java/org/apache/maven/building/FileSource.java b/maven-builder-support/src/main/java/org/apache/maven/building/FileSource.java
index 37020a825ac4..b3d04057eef9 100644
--- a/maven-builder-support/src/main/java/org/apache/maven/building/FileSource.java
+++ b/maven-builder-support/src/main/java/org/apache/maven/building/FileSource.java
@@ -19,9 +19,9 @@
package org.apache.maven.building;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.Files;
import java.util.Objects;
/**
@@ -46,7 +46,7 @@ public FileSource(File file) {
@Override
public InputStream getInputStream() throws IOException {
- return new FileInputStream(file);
+ return Files.newInputStream(file.toPath());
}
@Override
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
index 666e2272297d..ed865b81b196 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
@@ -43,7 +43,7 @@ public DefaultArtifact(@Nonnull AbstractSession session, @Nonnull org.eclipse.ae
+ getArtifactId()
+ ':'
+ getExtension()
- + (getClassifier().length() > 0 ? ":" + getClassifier() : "")
+ + (getClassifier().isEmpty() ? "" : ":" + getClassifier())
+ ':'
+ getVersion();
}
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index 1845e3980b7e..6f9a63fa07ad 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -22,13 +22,12 @@
import javax.inject.Named;
import javax.inject.Singleton;
-import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -229,7 +228,7 @@ private PluginDescriptor extractPluginDescriptor(Artifact pluginArtifact, Plugin
File pluginXml = new File(pluginFile, getPluginDescriptorLocation());
if (pluginXml.isFile()) {
- try (InputStream is = new BufferedInputStream(new FileInputStream(pluginXml))) {
+ try (InputStream is = Files.newInputStream(pluginXml.toPath())) {
pluginDescriptor = parsePluginDescriptor(is, plugin, pluginXml.getAbsolutePath());
}
}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 5070deffa19a..a4ad1d23fa18 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -333,7 +333,7 @@ void initialize(CliRequest cliRequest) throws ExitException {
for (String arg : cliRequest.args) {
if (isAltFile) {
// this is the argument following -f/--file
- Path path = topDirectory.resolve(arg);
+ Path path = topDirectory.resolve(stripLeadingAndTrailingQuotes(arg));
if (Files.isDirectory(path)) {
topDirectory = path;
} else if (Files.isRegularFile(path)) {
@@ -351,7 +351,7 @@ void initialize(CliRequest cliRequest) throws ExitException {
break;
} else {
// Check if this is the -f/--file option
- isAltFile = arg.equals(String.valueOf(CLIManager.ALTERNATE_POM_FILE)) || arg.equals("file");
+ isAltFile = arg.equals("-f") || arg.equals("--file");
}
}
topDirectory = getCanonicalPath(topDirectory);
@@ -1616,6 +1616,18 @@ public Object getValue(String expression) {
return interpolator;
}
+ private static String stripLeadingAndTrailingQuotes(String str) {
+ final int length = str.length();
+ if (length > 1
+ && str.startsWith("\"")
+ && str.endsWith("\"")
+ && str.substring(1, length - 1).indexOf('"') == -1) {
+ str = str.substring(1, length - 1);
+ }
+
+ return str;
+ }
+
private static Path getCanonicalPath(Path path) {
try {
return path.toRealPath();