diff --git a/apache-maven/pom.xml b/apache-maven/pom.xml
index 5f47f9dc5731..eb198048e42b 100644
--- a/apache-maven/pom.xml
+++ b/apache-maven/pom.xml
@@ -98,8 +98,8 @@ under the License.
maven-slf4j-provider
- org.fusesource.jansi
- jansi
+ org.jline
+ jline
diff --git a/apache-maven/src/main/appended-resources/licenses/unrecognized-jline-3.25.0.txt b/apache-maven/src/main/appended-resources/licenses/unrecognized-jline-3.25.0.txt
new file mode 100644
index 000000000000..b62fe457163c
--- /dev/null
+++ b/apache-maven/src/main/appended-resources/licenses/unrecognized-jline-3.25.0.txt
@@ -0,0 +1,35 @@
+Copyright (c) 2002-2023, the original author or authors.
+All rights reserved.
+
+https://opensource.org/licenses/BSD-3-Clause
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the following
+conditions are met:
+
+Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with
+the distribution.
+
+Neither the name of JLine nor the names of its contributors
+may be used to endorse or promote products derived from this
+software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilder.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilder.java
index d00ad8d95451..8a996032e2a5 100644
--- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilder.java
+++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilder.java
@@ -26,7 +26,7 @@
* @since 4.0.0
* @see MessageBuilderFactory
*/
-public interface MessageBuilder {
+public interface MessageBuilder extends Appendable {
/**
* Append message content in trace style.
@@ -36,7 +36,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder trace(Object message);
+ default MessageBuilder trace(Object message) {
+ return style(".trace:-bold,f:magenta", message);
+ }
/**
* Append message content in debug style.
@@ -46,7 +48,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder debug(Object message);
+ default MessageBuilder debug(Object message) {
+ return style(".debug:-bold,f:cyan", message);
+ }
/**
* Append message content in info style.
@@ -56,7 +60,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder info(Object message);
+ default MessageBuilder info(Object message) {
+ return style(".info:-bold,f:blue", message);
+ }
/**
* Append message content in warning style.
@@ -66,7 +72,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder warning(Object message);
+ default MessageBuilder warning(Object message) {
+ return style(".warning:-bold,f:yellow", message);
+ }
/**
* Append message content in error style.
@@ -76,7 +84,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder error(Object message);
+ default MessageBuilder error(Object message) {
+ return style(".error:-bold,f:red", message);
+ }
/**
* Append message content in success style.
@@ -86,7 +96,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder success(Object message);
+ default MessageBuilder success(Object message) {
+ return style(".success:-bold,f:green", message);
+ }
/**
* Append message content in failure style.
@@ -96,7 +108,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder failure(Object message);
+ default MessageBuilder failure(Object message) {
+ return style(".failure:-bold,f:red", message);
+ }
/**
* Append message content in strong style.
@@ -106,7 +120,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder strong(Object message);
+ default MessageBuilder strong(Object message) {
+ return style(".strong:-bold", message);
+ }
/**
* Append message content in mojo style.
@@ -116,7 +132,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder mojo(Object message);
+ default MessageBuilder mojo(Object message) {
+ return style(".mojo:-f:green", message);
+ }
/**
* Append message content in project style.
@@ -126,11 +144,35 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder project(Object message);
+ default MessageBuilder project(Object message) {
+ return style(".project:-f:cyan", message);
+ }
+
+ @Nonnull
+ default MessageBuilder style(String style, Object message) {
+ return style(style).a(message).resetStyle();
+ }
+
+ MessageBuilder style(String style);
+
+ MessageBuilder resetStyle();
//
// message building methods modelled after Ansi methods
//
+
+ @Nonnull
+ @Override
+ MessageBuilder append(CharSequence cs);
+
+ @Nonnull
+ @Override
+ MessageBuilder append(CharSequence cs, int start, int end);
+
+ @Nonnull
+ @Override
+ MessageBuilder append(char c);
+
/**
* Append content to the message buffer.
*
@@ -140,7 +182,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder a(char[] value, int offset, int len);
+ default MessageBuilder a(char[] value, int offset, int len) {
+ return append(String.valueOf(value, offset, len));
+ }
/**
* Append content to the message buffer.
@@ -149,7 +193,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder a(char[] value);
+ default MessageBuilder a(char[] value) {
+ return append(String.valueOf(value));
+ }
/**
* Append content to the message buffer.
@@ -160,7 +206,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder a(CharSequence value, int start, int end);
+ default MessageBuilder a(CharSequence value, int start, int end) {
+ return append(value, start, end);
+ }
/**
* Append content to the message buffer.
@@ -169,7 +217,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder a(CharSequence value);
+ default MessageBuilder a(CharSequence value) {
+ return append(value);
+ }
/**
* Append content to the message buffer.
@@ -178,7 +228,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder a(Object value);
+ default MessageBuilder a(Object value) {
+ return append(String.valueOf(value));
+ }
/**
* Append newline to the message buffer.
@@ -186,7 +238,9 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder newline();
+ default MessageBuilder newline() {
+ return append(System.lineSeparator());
+ }
/**
* Append formatted content to the buffer.
@@ -197,20 +251,23 @@ public interface MessageBuilder {
* @return the current builder
*/
@Nonnull
- MessageBuilder format(String pattern, Object... args);
+ default MessageBuilder format(String pattern, Object... args) {
+ return append(String.format(pattern, args));
+ }
/**
- * Return the built message.
+ * Set the buffer length.
*
- * @return the message
+ * @param length the new length
+ * @return the current builder
*/
- @Nonnull
- String build();
+ MessageBuilder setLength(int length);
/**
- * Set the buffer length.
+ * Return the built message.
*
- * @param length the new length
+ * @return the message
*/
- void setLength(int length);
+ @Nonnull
+ String build();
}
diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilderFactory.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilderFactory.java
index ac4691ecfbfd..9a595ae11095 100644
--- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilderFactory.java
+++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/MessageBuilderFactory.java
@@ -48,21 +48,11 @@ public interface MessageBuilderFactory extends Service {
@Nonnull
MessageBuilder builder();
- /**
- * Creates a new message builder backed by the given string builder.
- * @param stringBuilder a string builder
- * @return a new message builder
- */
- @Nonnull
- MessageBuilder builder(@Nonnull StringBuilder stringBuilder);
-
/**
* Creates a new message builder of the specified size.
* @param size the initial size of the message builder buffer
* @return a new message builder
*/
@Nonnull
- default MessageBuilder builder(int size) {
- return builder(new StringBuilder(size));
- }
+ MessageBuilder builder(int size);
}
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilder.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilder.java
index 08f28d9553b9..692b1e37e549 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilder.java
@@ -36,111 +36,36 @@ public DefaultMessageBuilder(StringBuilder buffer) {
}
@Override
- @Nonnull
- public MessageBuilder trace(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder debug(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder info(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder warning(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder error(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder success(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder failure(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder strong(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder mojo(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder project(Object o) {
- return a(o);
- }
-
- @Override
- @Nonnull
- public MessageBuilder a(char[] chars, int i, int i1) {
- buffer.append(chars, i, i1);
- return this;
- }
-
- @Override
- @Nonnull
- public MessageBuilder a(char[] chars) {
- buffer.append(chars);
+ public MessageBuilder style(String style) {
return this;
}
@Override
- @Nonnull
- public MessageBuilder a(CharSequence charSequence, int i, int i1) {
- buffer.append(charSequence, i, i1);
+ public MessageBuilder resetStyle() {
return this;
}
@Override
- @Nonnull
- public MessageBuilder a(CharSequence charSequence) {
- buffer.append(charSequence);
+ public MessageBuilder append(CharSequence cs) {
+ buffer.append(cs);
return this;
}
@Override
- @Nonnull
- public MessageBuilder a(Object o) {
- buffer.append(o);
+ public MessageBuilder append(CharSequence cs, int start, int end) {
+ buffer.append(cs, start, end);
return this;
}
@Override
- @Nonnull
- public MessageBuilder newline() {
- buffer.append(System.getProperty("line.separator"));
+ public MessageBuilder append(char c) {
+ buffer.append(c);
return this;
}
@Override
- @Nonnull
- public MessageBuilder format(String s, Object... objects) {
- buffer.append(String.format(s, objects));
+ public MessageBuilder setLength(int length) {
+ buffer.setLength(length);
return this;
}
@@ -154,9 +79,4 @@ public String build() {
public String toString() {
return build();
}
-
- @Override
- public void setLength(int length) {
- buffer.setLength(length);
- }
}
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java
index ea4c94f49247..bb2f6c982e7e 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java
@@ -22,8 +22,6 @@
import javax.inject.Named;
import javax.inject.Singleton;
-import java.util.Objects;
-
import org.apache.maven.api.annotations.Experimental;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.services.MessageBuilder;
@@ -57,7 +55,7 @@ public MessageBuilder builder() {
@Override
@Nonnull
- public MessageBuilder builder(@Nonnull StringBuilder stringBuilder) {
- return new DefaultMessageBuilder(Objects.requireNonNull(stringBuilder));
+ public MessageBuilder builder(int size) {
+ return new DefaultMessageBuilder(new StringBuilder(size));
}
}
diff --git a/maven-core/src/main/resources/META-INF/maven/extension.xml b/maven-core/src/main/resources/META-INF/maven/extension.xml
index 1823336d837c..8a87ea31f39e 100644
--- a/maven-core/src/main/resources/META-INF/maven/extension.xml
+++ b/maven-core/src/main/resources/META-INF/maven/extension.xml
@@ -99,6 +99,10 @@ under the License.
org.codehaus.plexus.logging
org.codehaus.plexus.personality
+
+ org.codehaus.plexus.components.interactivity
+ org.fusesource.jansi.Ansi
+
javax.inject.*