diff --git a/maven-slf4j-provider/pom.xml b/maven-slf4j-provider/pom.xml index 315b9a738604..5aa559200809 100644 --- a/maven-slf4j-provider/pom.xml +++ b/maven-slf4j-provider/pom.xml @@ -32,8 +32,7 @@ under the License. Maven SLF4J Simple Provider - Maven SLF4J provider based on SLF4J's simple provider, monkey-patched to support Maven styled colors - for levels and stacktraces rendering. + Maven SLF4J provider based on SLF4J's simple provider. @@ -41,6 +40,11 @@ under the License. org.slf4j slf4j-api + + org.slf4j + slf4j-simple + ${slf4jVersion} + org.apache.maven.shared maven-shared-utils @@ -49,68 +53,36 @@ under the License. + org.apache.maven.plugins - maven-dependency-plugin - - - - org.slf4j - slf4j-simple - ${slf4jVersion} - jar - sources - false - ${project.build.directory}/generated-sources/slf4j-simple - org/slf4j/impl/*.java - - - - - - unzip-slf4j-simple - - unpack - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 1.12 + maven-shade-plugin + 3.0.0 - add-slf4j-simple - generate-sources + package - add-source + shade - - ${project.build.directory}/generated-sources/slf4j-simple - - - - - - - org.codehaus.gmaven - groovy-maven-plugin - 2.0 - - - patch-slf4j-simple - process-sources - - execute - - - ${project.basedir}/src/main/script/patch-slf4j-simple.groovy + + + org.slf4j:slf4j-simple + + + + + org.slf4j:slf4j-simple + + org/slf4j/impl/StaticLoggerBinder* + + + - \ No newline at end of file + + diff --git a/maven-slf4j-provider/src/main/java/org/slf4j/impl/MavenSimpleLogger.java b/maven-slf4j-provider/src/main/java/org/slf4j/impl/MavenSimpleLogger.java index 17f1f484c32f..af05ba907791 100644 --- a/maven-slf4j-provider/src/main/java/org/slf4j/impl/MavenSimpleLogger.java +++ b/maven-slf4j-provider/src/main/java/org/slf4j/impl/MavenSimpleLogger.java @@ -56,8 +56,13 @@ protected String renderLevel( int level ) } @Override - protected void renderThrowable( Throwable t, PrintStream stream ) + protected void writeThrowable( Throwable t, PrintStream stream ) { + if ( t == null ) + { + return; + } + stream.print( buffer().failure( t.getClass().getName() ) ); if ( t.getMessage() != null ) { diff --git a/maven-slf4j-provider/src/main/java/org/slf4j/impl/StaticLoggerBinder.java b/maven-slf4j-provider/src/main/java/org/slf4j/impl/StaticLoggerBinder.java new file mode 100644 index 000000000000..e613a470ff5c --- /dev/null +++ b/maven-slf4j-provider/src/main/java/org/slf4j/impl/StaticLoggerBinder.java @@ -0,0 +1,87 @@ +package org.slf4j.impl; + +/* + * 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. + */ + +import org.slf4j.ILoggerFactory; +import org.slf4j.spi.LoggerFactoryBinder; + +/** + * SLF4J LoggerFactoryBinder implementation using MavenSimpleLogger. + * This class is part of the required classes used to specify an + * SLF4J logger provider implementation. + * + * @since 3.5.0 + */ +public final class StaticLoggerBinder implements LoggerFactoryBinder +{ + /** + * Declare the version of the SLF4J API this implementation is compiled + * against. The value of this field is usually modified with each release. + */ + // to avoid constant folding by the compiler, this field must *not* be final + public static String REQUESTED_API_VERSION = "1.7.25"; // !final + + private static final String LOGGER_FACTORY_CLASS_STR = MavenSimpleLoggerFactory.class.getName(); + + /** + * The unique instance of this class. + */ + private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder(); + + /** + * The ILoggerFactory instance returned by the {@link #getLoggerFactory} + * method should always be the same object + */ + private final ILoggerFactory loggerFactory; + + /** + * Private constructor to prevent instantiation + */ + private StaticLoggerBinder() + { + loggerFactory = new MavenSimpleLoggerFactory(); + } + + /** + * Returns the singleton of this class. + */ + public static StaticLoggerBinder getSingleton() + { + return SINGLETON; + } + + /** + * Returns the factory. + */ + @Override + public ILoggerFactory getLoggerFactory() + { + return loggerFactory; + } + + /** + * Returns the class name. + */ + @Override + public String getLoggerFactoryClassStr() + { + return LOGGER_FACTORY_CLASS_STR; + } +} diff --git a/maven-slf4j-provider/src/main/script/patch-slf4j-simple.groovy b/maven-slf4j-provider/src/main/script/patch-slf4j-simple.groovy deleted file mode 100644 index bba864662f70..000000000000 --- a/maven-slf4j-provider/src/main/script/patch-slf4j-simple.groovy +++ /dev/null @@ -1,53 +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. - */ - -dir = new File( basedir, 'target/generated-sources/slf4j-simple/org/slf4j/impl' ); - -file = new File( dir, 'StaticLoggerBinder.java' ); -content = file.text; - -// check if already patched -if ( content.contains( 'MavenSimpleLoggerFactory' ) ) -{ - println ' slf4j-simple already patched'; - return; -} - - -println ' patching StaticLoggerBinder.java'; -content = content.replaceAll( 'SimpleLoggerFactory', 'MavenSimpleLoggerFactory' ); -file.write( content ); - - -println ' patching SimpleLogger.java'; -file = new File( dir, 'SimpleLogger.java' ); -content = file.text; -content = content.replaceAll( 'private static final int LOG_LEVEL_', 'protected static final int LOG_LEVEL_' ); -content = content.replaceAll( 't.printStackTrace(TARGET_STREAM)', 'renderThrowable(t, TARGET_STREAM);' ); - -index = content.indexOf( 'switch (level) {' ); -end = content.indexOf( '}', index ) + 1; -content = content.substring( 0, index ) + 'buf.append(renderLevel(level));' + content.substring( end ); - -content = content.substring( 0, content.lastIndexOf( '}' ) ); -content += ' protected void renderThrowable(Throwable t, PrintStream stream) {}\n'; -content += ' protected String renderLevel(int level) { return ""; }\n}\n'; - -file.write( content ); diff --git a/pom.xml b/pom.xml index e16d93bad592..02a773409d11 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ under the License. 1.9.1 1.3 1.0.3 - 1.7.22 + 1.7.25 true apache-maven @@ -590,6 +590,7 @@ under the License. .maven/spy.log .java-version README.md + dependency-reduced-pom.xml