You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2024/11/26 09:02:16 UTC
(maven-mvnd) 05/06: Upgrade to 4.0.0-rc-1 (fixes #1203 and #1204)
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git
commit dade78541c95f14badaed5afb97df14065c58879
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Nov 7 15:32:34 2024 +0100
Upgrade to 4.0.0-rc-1 (fixes #1203 and #1204)
# Conflicts:
# pom.xml
---
.mvn/maven.config | 3 -
.mvn/release-settings.xml | 4 +-
.../org/mvndaemon/mvnd/client/DefaultClient.java | 6 +-
.../org/mvndaemon/mvnd/client/DefaultClient.java | 5 +-
.../mvndaemon/mvnd/client/DaemonParameters.java | 2 +-
.../org/mvndaemon/mvnd/common/Environment.java | 2 +-
.../maven/cli/CommonsCliDaemonMavenOptions.java | 85 +++-------------
.../org/apache/maven/cli/DaemonMavenCling.java | 2 +-
.../org/apache/maven/cli/DaemonMavenInvoker.java | 113 +++++++++------------
.../org/apache/maven/cli/DaemonMavenOptions.java | 30 ------
.../org/apache/maven/cli/DaemonMavenParser.java | 30 +-----
.../cli/DaemonPlexusContainerCapsuleFactory.java | 10 +-
.../maven/cli/LayeredDaemonMavenOptions.java | 59 -----------
.../META-INF/maven/slf4j-configuration.properties | 2 +-
pom.xml | 2 +-
15 files changed, 79 insertions(+), 276 deletions(-)
diff --git a/.mvn/maven.config b/.mvn/maven.config
deleted file mode 100644
index 4230c241..00000000
--- a/.mvn/maven.config
+++ /dev/null
@@ -1,3 +0,0 @@
--Dmaven.wagon.httpconnectionManager.ttlSeconds=120
--Dmaven.wagon.http.retryHandler.requestSentEnabled=true
--Dmaven.wagon.http.retryHandler.count=10
diff --git a/.mvn/release-settings.xml b/.mvn/release-settings.xml
index 791682b2..9353e02d 100644
--- a/.mvn/release-settings.xml
+++ b/.mvn/release-settings.xml
@@ -6,8 +6,8 @@
<id>maven-staging</id>
<repositories>
<repository>
- <id>maven-staging-1</id>
- <url>https://repository.apache.org/content/repositories/maven-1859/</url>
+ <id>maven-staging-rc1</id>
+ <url>https://repository.apache.org/content/repositories/maven-2247/</url>
<releases>
<enabled>true</enabled>
</releases>
diff --git a/client/src/main/java-fallback/org/mvndaemon/mvnd/client/DefaultClient.java b/client/src/main/java-fallback/org/mvndaemon/mvnd/client/DefaultClient.java
index 0dd01585..cfcceb71 100644
--- a/client/src/main/java-fallback/org/mvndaemon/mvnd/client/DefaultClient.java
+++ b/client/src/main/java-fallback/org/mvndaemon/mvnd/client/DefaultClient.java
@@ -18,7 +18,7 @@
*/
package org.mvndaemon.mvnd.client;
-import org.apache.maven.cli.MavenCli;
+import org.apache.maven.cling.MavenCling;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,8 +26,8 @@ public class DefaultClient {
public static void main(String[] argv) throws Exception {
final Logger LOGGER = LoggerFactory.getLogger(DefaultClient.class);
LOGGER.warn("Found old JDK, fallback to the embedded maven!");
- LOGGER.warn("Use JDK 11+ to run maven-mvnd client!");
+ LOGGER.warn("Use JDK 17+ to run maven-mvnd client!");
- MavenCli.main(argv);
+ MavenCling.main(argv);
}
}
diff --git a/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java b/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java
index 7d9a2faa..dfc61897 100644
--- a/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java
+++ b/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java
@@ -69,8 +69,6 @@ public class DefaultClient implements Client {
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultClient.class);
- private final DaemonParameters parameters;
-
public static void main(String[] argv) throws Exception {
final List<String> args = new ArrayList<>(Arrays.asList(argv));
@@ -224,6 +222,8 @@ public class DefaultClient implements Client {
.noneMatch(e -> e.hasCommandLineOption(Collections.singletonList(arg)));
}
+ private final DaemonParameters parameters;
+
public DefaultClient(DaemonParameters parameters) {
// Those options are needed in order to be able to set the environment correctly
this.parameters = parameters.withJdkJavaOpts(
@@ -484,7 +484,6 @@ public class DefaultClient implements Client {
}
private DefaultResult(List<String> args, Exception exception, int exitCode) {
- super();
this.args = args;
this.exception = exception;
this.exitCode = exitCode;
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
index 23aaa5d9..9d2a773d 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
@@ -46,7 +46,7 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.maven.api.cli.extensions.CoreExtension;
-import org.apache.maven.cli.internal.extension.io.CoreExtensionsStaxReader;
+import org.apache.maven.cling.internal.extension.io.CoreExtensionsStaxReader;
import org.mvndaemon.mvnd.common.Environment;
import org.mvndaemon.mvnd.common.InterpolationHelper;
import org.mvndaemon.mvnd.common.Os;
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
index 55848c53..5615d762 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
@@ -104,7 +104,7 @@ public enum Environment {
/** Batch mode */
MAVEN_BATCH_MODE(null, null, null, OptionType.BOOLEAN, Flags.INTERNAL, "mvn:-B", "mvn:--batch-mode"),
/** Debug */
- MAVEN_DEBUG(null, null, null, OptionType.BOOLEAN, Flags.INTERNAL, "mvn:-X", "mvn:--debug"),
+ MAVEN_DEBUG(null, null, null, OptionType.BOOLEAN, Flags.INTERNAL, "mvn:-X", "mvn:--verbose"),
/** Version */
MAVEN_VERSION(null, null, null, OptionType.BOOLEAN, Flags.INTERNAL, "mvn:-v", "mvn:-version", "mvn:--version"),
/** Show version */
diff --git a/daemon/src/main/java/org/apache/maven/cli/CommonsCliDaemonMavenOptions.java b/daemon/src/main/java/org/apache/maven/cli/CommonsCliDaemonMavenOptions.java
index eed140a6..a846fab5 100644
--- a/daemon/src/main/java/org/apache/maven/cli/CommonsCliDaemonMavenOptions.java
+++ b/daemon/src/main/java/org/apache/maven/cli/CommonsCliDaemonMavenOptions.java
@@ -18,35 +18,25 @@
*/
package org.apache.maven.cli;
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
-import java.util.Collection;
+import java.util.ArrayList;
import java.util.List;
-import java.util.ListIterator;
import java.util.Locale;
-import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
+import java.util.function.Consumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Stream;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.maven.cling.invoker.mvn.CommonsCliMavenOptions;
import org.apache.maven.jline.MessageUtils;
-import org.codehaus.plexus.interpolation.BasicInterpolator;
-import org.codehaus.plexus.interpolation.InterpolationException;
import org.mvndaemon.mvnd.common.Environment;
import org.mvndaemon.mvnd.common.OptionType;
-import static org.apache.maven.cling.invoker.Utils.createInterpolator;
-
-public class CommonsCliDaemonMavenOptions extends CommonsCliMavenOptions implements DaemonMavenOptions {
+public class CommonsCliDaemonMavenOptions extends CommonsCliMavenOptions {
public static CommonsCliDaemonMavenOptions parse(String source, String[] args) throws ParseException {
CLIManager cliManager = new CLIManager();
return new CommonsCliDaemonMavenOptions(source, cliManager, cliManager.parse(args));
@@ -56,44 +46,7 @@ public class CommonsCliDaemonMavenOptions extends CommonsCliMavenOptions impleme
super(source, cliManager, commandLine);
}
- public org.apache.commons.cli.Options getOptions() {
- return this.cliManager.getOptions();
- }
-
- private static CommonsCliDaemonMavenOptions interpolate(
- CommonsCliDaemonMavenOptions options, Collection<Map<String, String>> properties) {
- try {
- // now that we have properties, interpolate all arguments
- BasicInterpolator interpolator = createInterpolator(properties);
- CommandLine.Builder commandLineBuilder = new CommandLine.Builder();
- commandLineBuilder.setDeprecatedHandler(o -> {});
- for (Option option : options.commandLine.getOptions()) {
- if (!CLIManager.USER_PROPERTY.equals(option.getOpt())) {
- List<String> values = option.getValuesList();
- for (ListIterator<String> it = values.listIterator(); it.hasNext(); ) {
- it.set(interpolator.interpolate(it.next()));
- }
- }
- commandLineBuilder.addOption(option);
- }
- for (String arg : options.commandLine.getArgList()) {
- commandLineBuilder.addArg(interpolator.interpolate(arg));
- }
- return new CommonsCliDaemonMavenOptions(
- options.source, (CLIManager) options.cliManager, commandLineBuilder.build());
- } catch (InterpolationException e) {
- throw new IllegalArgumentException("Could not interpolate CommonsCliOptions", e);
- }
- }
-
- @Override
- public DaemonMavenOptions interpolate(Collection<Map<String, String>> properties) {
- return interpolate(this, properties);
- }
-
protected static class CLIManager extends CommonsCliMavenOptions.CLIManager {
- public static final String RAW_STREAMS = "ras";
-
private static final Pattern HTML_TAGS_PATTERN = Pattern.compile("<[^>]*>");
private static final Pattern COLUMNS_DETECTOR_PATTERN = Pattern.compile("^[ ]+[^s]");
private static final Pattern WS_PATTERN = Pattern.compile("\\s+");
@@ -103,28 +56,15 @@ public class CommonsCliDaemonMavenOptions extends CommonsCliMavenOptions impleme
}
@Override
- protected void prepareOptions(Options options) {
- super.prepareOptions(options);
- options.addOption(Option.builder(RAW_STREAMS)
- .longOpt("raw-streams")
- .desc("Use raw-streams for daemon communication")
- .build());
- }
-
- @Override
- public void displayHelp(String command, PrintWriter pw) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try (PrintWriter pww = new PrintWriter(new PrintStream(baos), true, StandardCharsets.UTF_8)) {
- super.displayHelp(command, pww);
- }
- final String mvnHelp = baos.toString(StandardCharsets.UTF_8);
- final Matcher m = COLUMNS_DETECTOR_PATTERN.matcher(mvnHelp);
+ public void displayHelp(String command, Consumer<String> pw) {
+ List<String> mvnHelp = new ArrayList<>();
+ super.displayHelp(command, mvnHelp::add);
+ final Matcher m = COLUMNS_DETECTOR_PATTERN.matcher(String.join("\n", mvnHelp));
final String indent = m.find() ? m.group() : " ";
- final int terminalWidth = getTerminalWidth();
+ int terminalWidth = getTerminalWidth() <= 0 ? 74 : getTerminalWidth();
final String lineSeparator = System.lineSeparator();
- final StringBuilder help =
- new StringBuilder(mvnHelp).append(lineSeparator).append("mvnd specific options:");
+ final StringBuilder help = new StringBuilder().append(lineSeparator).append("mvnd specific options:");
Environment.documentedEntries().forEach(entry -> {
final Environment env = entry.getEntry();
@@ -190,9 +130,8 @@ public class CommonsCliDaemonMavenOptions extends CommonsCliMavenOptions impleme
spaces(help, indentPos - help.length());
wrap(help, toPlainText(entry.getJavaDoc()), terminalWidth, lineEnd, indent);
});
-
- pw.print(help);
- pw.flush();
+ Stream.concat(mvnHelp.stream(), Stream.of(help.toString().split(lineSeparator)))
+ .forEach(pw);
}
private static int getTerminalWidth() {
diff --git a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCling.java b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCling.java
index d2debc27..55690f8f 100644
--- a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCling.java
+++ b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCling.java
@@ -72,7 +72,7 @@ public class DaemonMavenCling implements DaemonCli {
EnvHelper.environment(workingDir, env);
System.setProperty("maven.multiModuleProjectDirectory", projectDir);
- return invoker.invoke(parser.parse(ParserRequest.builder(
+ return invoker.invoke(parser.parseInvocation(ParserRequest.builder(
"mvnd", "Maven Daemon", args, new ProtoLogger(), new DaemonMessageBuilderFactory())
.cwd(Paths.get(workingDir))
.in(in)
diff --git a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenInvoker.java b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenInvoker.java
index d2a19c18..6dfdb568 100644
--- a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenInvoker.java
+++ b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenInvoker.java
@@ -18,68 +18,60 @@
*/
package org.apache.maven.cli;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
+import java.util.Optional;
+import org.apache.maven.api.cli.InvokerException;
+import org.apache.maven.api.cli.InvokerRequest;
import org.apache.maven.api.cli.Options;
-import org.apache.maven.api.cli.mvn.MavenInvokerRequest;
-import org.apache.maven.api.cli.mvn.MavenOptions;
-import org.apache.maven.api.services.MavenException;
import org.apache.maven.cling.invoker.ContainerCapsuleFactory;
import org.apache.maven.cling.invoker.ProtoLookup;
-import org.apache.maven.cling.invoker.mvn.resident.DefaultResidentMavenInvoker;
+import org.apache.maven.cling.invoker.mvn.resident.ResidentMavenContext;
+import org.apache.maven.cling.invoker.mvn.resident.ResidentMavenInvoker;
+import org.apache.maven.cling.utils.CLIReportingUtils;
+import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.jline.MessageUtils;
import org.apache.maven.logging.BuildEventListener;
import org.apache.maven.logging.LoggingOutputStream;
import org.jline.terminal.Terminal;
-import org.jline.terminal.impl.ExternalTerminal;
+import org.jline.terminal.TerminalBuilder;
import org.mvndaemon.mvnd.common.Environment;
-public class DaemonMavenInvoker extends DefaultResidentMavenInvoker {
+public class DaemonMavenInvoker extends ResidentMavenInvoker {
public DaemonMavenInvoker(ProtoLookup protoLookup) {
super(protoLookup);
}
- // TODO: this is a hack, and fixes issue in DefaultResidentMavenInvoker that does not copy TCCL
- private ClassLoader tccl;
-
- protected int doInvoke(LocalContext context) throws Exception {
- try {
- if (tccl != null) {
- context.currentThreadContextClassLoader = tccl;
- Thread.currentThread().setContextClassLoader(context.currentThreadContextClassLoader);
- }
- return super.doInvoke(context);
- } finally {
- this.tccl = context.currentThreadContextClassLoader;
+ @Override
+ protected void createTerminal(ResidentMavenContext context) {
+ MessageUtils.systemInstall(
+ builder -> {
+ builder.streams(
+ context.invokerRequest.in().orElseThrow(),
+ context.invokerRequest.out().orElseThrow());
+ builder.systemOutput(TerminalBuilder.SystemOutput.ForcedSysOut);
+ builder.provider(TerminalBuilder.PROP_PROVIDER_EXEC);
+ if (context.coloredOutput != null) {
+ builder.color(context.coloredOutput);
+ }
+ },
+ terminal -> doConfigureWithTerminal(context, terminal));
+ context.terminal = MessageUtils.getTerminal();
+ context.closeables.add(MessageUtils::systemUninstall);
+ MessageUtils.registerShutdownHook();
+ if (context.coloredOutput != null) {
+ MessageUtils.setColorEnabled(context.coloredOutput);
}
}
@Override
- protected Terminal createTerminal(LocalContext context) {
- try {
- Terminal terminal = new ExternalTerminal(
- "Maven",
- "ansi",
- context.invokerRequest.in().get(),
- context.invokerRequest.out().get(),
- StandardCharsets.UTF_8);
- doConfigureWithTerminal(context, terminal);
- // If raw-streams options has been set, we need to decorate to push back to the client
- if (context.invokerRequest.options().rawStreams().orElse(false)) {
- BuildEventListener bel = determineBuildEventListener(context);
- OutputStream out = context.invokerRequest.out().orElse(null);
- System.setOut(out != null ? printStream(out) : new LoggingOutputStream(bel::log).printStream());
- OutputStream err = context.invokerRequest.err().orElse(null);
- System.setErr(err != null ? printStream(err) : new LoggingOutputStream(bel::log).printStream());
- }
- return terminal;
- } catch (IOException e) {
- throw new MavenException("Error creating terminal", e);
+ protected void doConfigureWithTerminal(ResidentMavenContext context, Terminal terminal) {
+ super.doConfigureWithTerminal(context, terminal);
+ Optional<Boolean> rawStreams = context.invokerRequest.options().rawStreams();
+ if (rawStreams.orElse(false)) {
+ System.setOut(printStream(context.invokerRequest.out().orElseThrow()));
+ System.setErr(printStream(context.invokerRequest.err().orElseThrow()));
}
}
@@ -94,22 +86,18 @@ public class DaemonMavenInvoker extends DefaultResidentMavenInvoker {
}
@Override
- protected org.apache.maven.logging.BuildEventListener doDetermineBuildEventListener(LocalContext context) {
+ protected org.apache.maven.logging.BuildEventListener doDetermineBuildEventListener(ResidentMavenContext context) {
return context.invokerRequest.lookup().lookup(BuildEventListener.class);
}
@Override
- protected void helpOrVersionAndMayExit(LocalContext context) throws Exception {
- MavenInvokerRequest<MavenOptions> invokerRequest = context.invokerRequest;
+ protected void helpOrVersionAndMayExit(ResidentMavenContext context) throws Exception {
+ InvokerRequest invokerRequest = context.invokerRequest;
BuildEventListener buildEventListener =
context.invokerRequest.parserRequest().lookup().lookup(BuildEventListener.class);
if (invokerRequest.options().help().isPresent()) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try (PrintWriter pw = new PrintWriter(new PrintStream(baos), true, StandardCharsets.UTF_8)) {
- context.invokerRequest.options().displayHelp(invokerRequest.parserRequest(), pw);
- }
- buildEventListener.log(baos.toString(StandardCharsets.UTF_8));
- throw new ExitException(0);
+ context.invokerRequest.options().displayHelp(invokerRequest.parserRequest(), buildEventListener::log);
+ throw new InvokerException.ExitException(0);
}
if (invokerRequest.options().showVersionAndExit().isPresent()) {
if (invokerRequest.options().quiet().orElse(false)) {
@@ -117,12 +105,12 @@ public class DaemonMavenInvoker extends DefaultResidentMavenInvoker {
} else {
buildEventListener.log(CLIReportingUtils.showVersion());
}
- throw new ExitException(0);
+ throw new InvokerException.ExitException(0);
}
}
@Override
- protected void preCommands(LocalContext context) throws Exception {
+ protected void preCommands(ResidentMavenContext context) throws Exception {
Options mavenOptions = context.invokerRequest.options();
if (mavenOptions.verbose().orElse(false) || mavenOptions.showVersion().orElse(false)) {
context.invokerRequest
@@ -134,26 +122,25 @@ public class DaemonMavenInvoker extends DefaultResidentMavenInvoker {
}
@Override
- protected ContainerCapsuleFactory<MavenOptions, MavenInvokerRequest<MavenOptions>, LocalContext>
- createContainerCapsuleFactory() {
+ protected ContainerCapsuleFactory<ResidentMavenContext> createContainerCapsuleFactory() {
return new DaemonPlexusContainerCapsuleFactory();
}
@Override
- protected int doExecute(LocalContext context) throws Exception {
+ protected int doExecute(ResidentMavenContext context, MavenExecutionRequest request) throws Exception {
context.logger.info(MessageUtils.builder()
.a("Processing build on daemon ")
.strong(Environment.MVND_ID.asString())
.toString());
- context.logger.info("Daemon status dump:");
- context.logger.info("CWD: " + context.invokerRequest.cwd());
- context.logger.info("MAVEN_HOME: " + context.invokerRequest.installationDirectory());
- context.logger.info("USER_HOME: " + context.invokerRequest.userHomeDirectory());
- context.logger.info("topDirectory: " + context.invokerRequest.topDirectory());
- context.logger.info("rootDirectory: " + context.invokerRequest.rootDirectory());
+ context.logger.debug("Daemon status dump:");
+ context.logger.debug("CWD: " + context.invokerRequest.cwd());
+ context.logger.debug("MAVEN_HOME: " + context.invokerRequest.installationDirectory());
+ context.logger.debug("USER_HOME: " + context.invokerRequest.userHomeDirectory());
+ context.logger.debug("topDirectory: " + context.invokerRequest.topDirectory());
+ context.logger.debug("rootDirectory: " + context.invokerRequest.rootDirectory());
try {
- return super.doExecute(context);
+ return super.doExecute(context, request);
} finally {
LoggingOutputStream.forceFlush(System.out);
LoggingOutputStream.forceFlush(System.err);
diff --git a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenOptions.java b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenOptions.java
deleted file mode 100644
index 969bf8d2..00000000
--- a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenOptions.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.cli;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.maven.api.cli.mvn.MavenOptions;
-
-public interface DaemonMavenOptions extends MavenOptions {
-
- @Override
- DaemonMavenOptions interpolate(Collection<Map<String, String>> properties);
-}
diff --git a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenParser.java b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenParser.java
index a3691755..de0a352a 100644
--- a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenParser.java
+++ b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenParser.java
@@ -26,31 +26,11 @@ import java.util.stream.Stream;
import org.apache.commons.cli.ParseException;
import org.apache.maven.api.cli.ParserException;
import org.apache.maven.api.cli.extensions.CoreExtension;
-import org.apache.maven.api.cli.mvn.MavenInvokerRequest;
import org.apache.maven.api.cli.mvn.MavenOptions;
-import org.apache.maven.cling.invoker.mvn.BaseMavenParser;
-import org.apache.maven.cling.invoker.mvn.DefaultMavenInvokerRequest;
+import org.apache.maven.cling.invoker.mvn.MavenParser;
import org.mvndaemon.mvnd.common.Environment;
-public class DaemonMavenParser extends BaseMavenParser<MavenOptions, MavenInvokerRequest<MavenOptions>> {
- @Override
- protected DefaultMavenInvokerRequest<MavenOptions> getInvokerRequest(LocalContext context) {
- return new DefaultMavenInvokerRequest<>(
- context.parserRequest,
- context.cwd,
- context.installationDirectory,
- context.userHomeDirectory,
- context.userProperties,
- context.systemProperties,
- context.topDirectory,
- context.rootDirectory,
- context.parserRequest.in(),
- context.parserRequest.out(),
- context.parserRequest.err(),
- context.extensions,
- (DaemonMavenOptions) context.options);
- }
-
+public class DaemonMavenParser extends MavenParser {
@Override
protected MavenOptions parseArgs(String source, List<String> args) throws ParserException {
try {
@@ -60,12 +40,6 @@ public class DaemonMavenParser extends BaseMavenParser<MavenOptions, MavenInvoke
}
}
- @Override
- protected MavenOptions assembleOptions(List<MavenOptions> parsedOptions) {
- return LayeredDaemonMavenOptions.layerDaemonMavenOptions(
- parsedOptions.stream().map(o -> (DaemonMavenOptions) o).toList());
- }
-
@Override
protected Map<String, String> populateSystemProperties(LocalContext context) throws ParserException {
HashMap<String, String> systemProperties = new HashMap<>(super.populateSystemProperties(context));
diff --git a/daemon/src/main/java/org/apache/maven/cli/DaemonPlexusContainerCapsuleFactory.java b/daemon/src/main/java/org/apache/maven/cli/DaemonPlexusContainerCapsuleFactory.java
index 346faff6..6bbb6136 100644
--- a/daemon/src/main/java/org/apache/maven/cli/DaemonPlexusContainerCapsuleFactory.java
+++ b/daemon/src/main/java/org/apache/maven/cli/DaemonPlexusContainerCapsuleFactory.java
@@ -25,16 +25,12 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Stream;
-import org.apache.maven.api.cli.mvn.MavenInvokerRequest;
-import org.apache.maven.api.cli.mvn.MavenOptions;
import org.apache.maven.cling.invoker.PlexusContainerCapsuleFactory;
-import org.apache.maven.cling.invoker.mvn.resident.DefaultResidentMavenInvoker;
+import org.apache.maven.cling.invoker.mvn.resident.ResidentMavenContext;
import org.apache.maven.extension.internal.CoreExtensionEntry;
import org.mvndaemon.mvnd.common.Environment;
-public class DaemonPlexusContainerCapsuleFactory
- extends PlexusContainerCapsuleFactory<
- MavenOptions, MavenInvokerRequest<MavenOptions>, DefaultResidentMavenInvoker.LocalContext> {
+public class DaemonPlexusContainerCapsuleFactory extends PlexusContainerCapsuleFactory<ResidentMavenContext> {
@Override
protected Set<String> collectExportedArtifacts(
@@ -54,7 +50,7 @@ public class DaemonPlexusContainerCapsuleFactory
}
@Override
- protected List<Path> parseExtClasspath(DefaultResidentMavenInvoker.LocalContext context) throws Exception {
+ protected List<Path> parseExtClasspath(ResidentMavenContext context) throws Exception {
return Stream.of(Environment.MVND_EXT_CLASSPATH.asString().split(","))
.filter(s -> s != null && !s.isEmpty())
.map(Paths::get)
diff --git a/daemon/src/main/java/org/apache/maven/cli/LayeredDaemonMavenOptions.java b/daemon/src/main/java/org/apache/maven/cli/LayeredDaemonMavenOptions.java
deleted file mode 100644
index 663a874d..00000000
--- a/daemon/src/main/java/org/apache/maven/cli/LayeredDaemonMavenOptions.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.cli;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.apache.maven.cling.invoker.mvn.LayeredMavenOptions;
-
-public class LayeredDaemonMavenOptions extends LayeredMavenOptions<DaemonMavenOptions> implements DaemonMavenOptions {
- public static DaemonMavenOptions layerDaemonMavenOptions(Collection<DaemonMavenOptions> options) {
- List<DaemonMavenOptions> o = options.stream().filter(Objects::nonNull).toList();
- if (o.isEmpty()) {
- throw new IllegalArgumentException("No options specified (or all were null)");
- } else if (o.size() == 1) {
- return o.get(0);
- } else {
- return new LayeredDaemonMavenOptions(o);
- }
- }
-
- private LayeredDaemonMavenOptions(List<DaemonMavenOptions> options) {
- super(options);
- }
-
- @Override
- public Optional<Boolean> rawStreams() {
- return returnFirstPresentOrEmpty(DaemonMavenOptions::rawStreams);
- }
-
- @Override
- public DaemonMavenOptions interpolate(Collection<Map<String, String>> properties) {
- ArrayList<DaemonMavenOptions> interpolatedOptions = new ArrayList<>(options.size());
- for (DaemonMavenOptions o : options) {
- interpolatedOptions.add(o.interpolate(properties));
- }
- return layerDaemonMavenOptions(interpolatedOptions);
- }
-}
diff --git a/logging/src/main/resources/META-INF/maven/slf4j-configuration.properties b/logging/src/main/resources/META-INF/maven/slf4j-configuration.properties
index 6f99f2a1..2fc1da23 100644
--- a/logging/src/main/resources/META-INF/maven/slf4j-configuration.properties
+++ b/logging/src/main/resources/META-INF/maven/slf4j-configuration.properties
@@ -17,4 +17,4 @@
# key = Slf4j effective logger factory implementation
# value = corresponding o.a.m.cli.logging.Slf4jConfiguration class
-org.mvndaemon.mvnd.logging.slf4j.MvndLoggerFactory=org.apache.maven.cli.logging.impl.MavenSimpleConfiguration
+org.mvndaemon.mvnd.logging.slf4j.MvndLoggerFactory=org.apache.maven.cling.logging.impl.MavenSimpleConfiguration
diff --git a/pom.xml b/pom.xml
index 61786a1f..3bd26f34 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
<groovy.version>4.0.24</groovy.version>
<jansi.version>2.4.1</jansi.version>
<jline.version>3.27.1</jline.version>
- <maven.version>4.0.0-beta-5</maven.version>
+ <maven.version>4.0.0-rc-1</maven.version>
<required-maven.version>3.9.9</required-maven.version>
<!-- Keep in sync with Maven -->