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();