Maybe I miss something but we don't have any associated jira entry for reference in release notes neither core it test. Do you have a bit of time for that ?
Thanks -- Olivier 2012/9/3 <jvan...@apache.org>: > Author: jvanzyl > Date: Mon Sep 3 01:07:31 2012 > New Revision: 1380105 > > URL: http://svn.apache.org/viewvc?rev=1380105&view=rev > Log: > o Enabled support and discovery of JSR-330 components > > o Added Slf4j logger factory to support generic JSR-330 logging > > o Exported Guice package for components that access Guice (or better it's > injector) directly > > Widen export of Guice packages (not ideal, need to look into ways to avoid > this) > > o use specific exports > > o for now we will attempt to hide all of Guice in plugin realms and we'll do > a bit of testing > > closes #3 > > Added: > > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLogger.java > > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLoggerFactory.java > Modified: > maven/maven-3/trunk/apache-maven/pom.xml > > maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java > maven/maven-3/trunk/maven-embedder/pom.xml > > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java > maven/maven-3/trunk/pom.xml > > Modified: maven/maven-3/trunk/apache-maven/pom.xml > URL: > http://svn.apache.org/viewvc/maven/maven-3/trunk/apache-maven/pom.xml?rev=1380105&r1=1380104&r2=1380105&view=diff > ============================================================================== > --- maven/maven-3/trunk/apache-maven/pom.xml (original) > +++ maven/maven-3/trunk/apache-maven/pom.xml Mon Sep 3 01:07:31 2012 > @@ -83,6 +83,10 @@ > <groupId>org.sonatype.aether</groupId> > <artifactId>aether-connector-wagon</artifactId> > </dependency> > + <dependency> > + <groupId>org.slf4j</groupId> > + <artifactId>slf4j-nop</artifactId> > + </dependency> > </dependencies> > > <build> > > Modified: > maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java > URL: > http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java?rev=1380105&r1=1380104&r2=1380105&view=diff > ============================================================================== > --- > maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java > (original) > +++ > maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java > Mon Sep 3 01:07:31 2012 > @@ -198,6 +198,26 @@ public class DefaultClassRealmManager > imports.put( "org.codehaus.plexus.util.xml.pull.XmlPullParser", > coreRealm ); > imports.put( > "org.codehaus.plexus.util.xml.pull.XmlPullParserException", coreRealm ); > imports.put( "org.codehaus.plexus.util.xml.pull.XmlSerializer", > coreRealm ); > + > + // javax.inject, sisu-inject (JSR-330) > + imports.put( "javax.inject.*", coreRealm ); > + imports.put( "javax.enterprise.inject.*", coreRealm ); > + imports.put( "org.sonatype.inject.*", coreRealm ); > + imports.put( "org.slf4j.*", coreRealm ); > + > + // com.google > + // > + // We may potentially want to export these, but right now I'm not > sure that anything Guice specific needs > + // to be made available to plugin authors. If we find people are > getting fancy and want to take advantage > + // of Guice specifics we can expose that later. Really some testing > needs to be done to see full hiding > + // of Guice has any impact on what we may categorize as a standard > JSR-330 based Tesla/Maven plugin. > + // > + // imports.put( "com.google.inject.*", coreRealm ); > + // imports.put( "com.google.inject.binder.*", coreRealm ); > + // imports.put( "com.google.inject.matcher.*", coreRealm ); > + // imports.put( "com.google.inject.name.*", coreRealm ); > + // imports.put( "com.google.inject.spi.*", coreRealm ); > + // imports.put( "com.google.inject.util.*", coreRealm ); > } > > /** > > Modified: maven/maven-3/trunk/maven-embedder/pom.xml > URL: > http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/pom.xml?rev=1380105&r1=1380104&r2=1380105&view=diff > ============================================================================== > --- maven/maven-3/trunk/maven-embedder/pom.xml (original) > +++ maven/maven-3/trunk/maven-embedder/pom.xml Mon Sep 3 01:07:31 2012 > @@ -70,6 +70,10 @@ > <groupId>org.sonatype.plexus</groupId> > <artifactId>plexus-cipher</artifactId> > </dependency> > + <dependency> > + <groupId>org.slf4j</groupId> > + <artifactId>slf4j-api</artifactId> > + </dependency> > <!-- CLI --> > <dependency> > <groupId>commons-cli</groupId> > > Modified: > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java > URL: > http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=1380105&r1=1380104&r2=1380105&view=diff > ============================================================================== > --- > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java > (original) > +++ > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java > Mon Sep 3 01:07:31 2012 > @@ -59,12 +59,14 @@ import org.apache.maven.settings.buildin > import org.codehaus.plexus.ContainerConfiguration; > import org.codehaus.plexus.DefaultContainerConfiguration; > import org.codehaus.plexus.DefaultPlexusContainer; > +import org.codehaus.plexus.PlexusConstants; > import org.codehaus.plexus.PlexusContainer; > import org.codehaus.plexus.classworlds.ClassWorld; > import org.codehaus.plexus.classworlds.realm.ClassRealm; > import > org.codehaus.plexus.component.repository.exception.ComponentLookupException; > import org.codehaus.plexus.logging.Logger; > import org.codehaus.plexus.util.StringUtils; > +import org.slf4j.ILoggerFactory; > import org.sonatype.aether.transfer.TransferListener; > import org.sonatype.plexus.components.cipher.DefaultPlexusCipher; > import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher; > @@ -72,6 +74,8 @@ import org.sonatype.plexus.components.se > import org.sonatype.plexus.components.sec.dispatcher.SecUtil; > import org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity; > > +import com.google.inject.AbstractModule; > + > // TODO: push all common bits back to plexus cli and prepare for transition > to Guice. We don't need 50 ways to make CLIs > > /** > @@ -372,17 +376,29 @@ public class MavenCli > { > logger = setupLogger( cliRequest ); > > + final MavenLoggerManager loggerManager = new MavenLoggerManager( > logger ) ; > + > ContainerConfiguration cc = new DefaultContainerConfiguration() > .setClassWorld( cliRequest.classWorld ) > .setRealm( setupContainerRealm( cliRequest ) ) > + .setClassPathScanning( PlexusConstants.SCANNING_INDEX ) > + .setAutoWiring( true ) > .setName( "maven" ); > > - container = new DefaultPlexusContainer( cc ); > + container = new DefaultPlexusContainer( cc, new AbstractModule() > + { > + > + protected void configure() > + { > + bind( ILoggerFactory.class ).toInstance( new > PlexusLoggerFactory( loggerManager ) ); > + } > + > + } ); > > // NOTE: To avoid inconsistencies, we'll use the TCCL > exclusively for lookups > container.setLookupRealm( null ); > > - container.setLoggerManager( new MavenLoggerManager( logger ) ); > + container.setLoggerManager( loggerManager ); > > customizeContainer( container ); > > > Added: > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLogger.java > URL: > http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLogger.java?rev=1380105&view=auto > ============================================================================== > --- > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLogger.java > (added) > +++ > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLogger.java > Mon Sep 3 01:07:31 2012 > @@ -0,0 +1,358 @@ > +package org.apache.maven.cli; > + > +/* > + * 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.Logger; > +import org.slf4j.Marker; > +import org.slf4j.helpers.FormattingTuple; > +import org.slf4j.helpers.MessageFormatter; > + > +/** > + * A Slf4j logger bridged onto a Plexus logger. > + */ > +class PlexusLogger > + implements Logger > +{ > + > + private final org.codehaus.plexus.logging.Logger logger; > + > + public PlexusLogger( org.codehaus.plexus.logging.Logger logger ) > + { > + this.logger = logger; > + } > + > + public String getName() > + { > + return logger.getName(); > + } > + > + public boolean isTraceEnabled() > + { > + return isDebugEnabled(); > + } > + > + public void trace( String msg ) > + { > + debug( msg ); > + } > + > + public void trace( String format, Object arg ) > + { > + debug( format, arg ); > + } > + > + public void trace( String format, Object arg1, Object arg2 ) > + { > + debug( format, arg1, arg2 ); > + } > + > + public void trace( String format, Object[] argArray ) > + { > + debug( format, argArray ); > + } > + > + public void trace( String msg, Throwable t ) > + { > + debug( msg, t ); > + } > + > + public boolean isTraceEnabled( Marker marker ) > + { > + return isTraceEnabled(); > + } > + > + public void trace( Marker marker, String msg ) > + { > + trace( msg ); > + } > + > + public void trace( Marker marker, String format, Object arg ) > + { > + trace( format, arg ); > + } > + > + public void trace( Marker marker, String format, Object arg1, Object > arg2 ) > + { > + trace( format, arg1, arg2 ); > + } > + > + public void trace( Marker marker, String format, Object[] argArray ) > + { > + trace( format, argArray ); > + } > + > + public void trace( Marker marker, String msg, Throwable t ) > + { > + trace( msg, t ); > + } > + > + public boolean isDebugEnabled() > + { > + return logger.isDebugEnabled(); > + } > + > + public void debug( String msg ) > + { > + logger.debug( msg ); > + } > + > + public void debug( String format, Object arg ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg ); > + logger.debug( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void debug( String format, Object arg1, Object arg2 ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg1, arg2 ); > + logger.debug( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void debug( String format, Object[] argArray ) > + { > + FormattingTuple ft = MessageFormatter.arrayFormat( format, argArray > ); > + logger.debug( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void debug( String msg, Throwable t ) > + { > + logger.debug( msg, t ); > + } > + > + public boolean isDebugEnabled( Marker marker ) > + { > + return isDebugEnabled(); > + } > + > + public void debug( Marker marker, String msg ) > + { > + debug( msg ); > + } > + > + public void debug( Marker marker, String format, Object arg ) > + { > + debug( format, arg ); > + } > + > + public void debug( Marker marker, String format, Object arg1, Object > arg2 ) > + { > + debug( format, arg1, arg2 ); > + } > + > + public void debug( Marker marker, String format, Object[] argArray ) > + { > + debug( format, argArray ); > + } > + > + public void debug( Marker marker, String msg, Throwable t ) > + { > + debug( msg, t ); > + } > + > + public boolean isInfoEnabled() > + { > + return logger.isInfoEnabled(); > + } > + > + public void info( String msg ) > + { > + logger.info( msg ); > + } > + > + public void info( String format, Object arg ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg ); > + logger.info( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void info( String format, Object arg1, Object arg2 ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg1, arg2 ); > + logger.info( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void info( String format, Object[] argArray ) > + { > + FormattingTuple ft = MessageFormatter.arrayFormat( format, argArray > ); > + logger.info( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void info( String msg, Throwable t ) > + { > + logger.info( msg, t ); > + } > + > + public boolean isInfoEnabled( Marker marker ) > + { > + return isInfoEnabled(); > + } > + > + public void info( Marker marker, String msg ) > + { > + info( msg ); > + } > + > + public void info( Marker marker, String format, Object arg ) > + { > + info( format, arg ); > + } > + > + public void info( Marker marker, String format, Object arg1, Object arg2 > ) > + { > + info( format, arg1, arg2 ); > + } > + > + public void info( Marker marker, String format, Object[] argArray ) > + { > + info( format, argArray ); > + } > + > + public void info( Marker marker, String msg, Throwable t ) > + { > + info( msg, t ); > + } > + > + public boolean isWarnEnabled() > + { > + return logger.isWarnEnabled(); > + } > + > + public void warn( String msg ) > + { > + logger.warn( msg ); > + } > + > + public void warn( String format, Object arg ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg ); > + logger.warn( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void warn( String format, Object arg1, Object arg2 ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg1, arg2 ); > + logger.warn( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void warn( String format, Object[] argArray ) > + { > + FormattingTuple ft = MessageFormatter.arrayFormat( format, argArray > ); > + logger.warn( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void warn( String msg, Throwable t ) > + { > + logger.warn( msg, t ); > + } > + > + public boolean isWarnEnabled( Marker marker ) > + { > + return isWarnEnabled(); > + } > + > + public void warn( Marker marker, String msg ) > + { > + warn( msg ); > + } > + > + public void warn( Marker marker, String format, Object arg ) > + { > + warn( format, arg ); > + } > + > + public void warn( Marker marker, String format, Object arg1, Object arg2 > ) > + { > + warn( format, arg1, arg2 ); > + } > + > + public void warn( Marker marker, String format, Object[] argArray ) > + { > + warn( format, argArray ); > + } > + > + public void warn( Marker marker, String msg, Throwable t ) > + { > + warn( msg, t ); > + } > + > + public boolean isErrorEnabled() > + { > + return logger.isErrorEnabled(); > + } > + > + public void error( String msg ) > + { > + logger.error( msg ); > + } > + > + public void error( String format, Object arg ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg ); > + logger.error( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void error( String format, Object arg1, Object arg2 ) > + { > + FormattingTuple ft = MessageFormatter.format( format, arg1, arg2 ); > + logger.error( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void error( String format, Object[] argArray ) > + { > + FormattingTuple ft = MessageFormatter.arrayFormat( format, argArray > ); > + logger.error( ft.getMessage(), ft.getThrowable() ); > + } > + > + public void error( String msg, Throwable t ) > + { > + logger.error( msg, t ); > + } > + > + public boolean isErrorEnabled( Marker marker ) > + { > + return isErrorEnabled(); > + } > + > + public void error( Marker marker, String msg ) > + { > + error( msg ); > + } > + > + public void error( Marker marker, String format, Object arg ) > + { > + error( format, arg ); > + } > + > + public void error( Marker marker, String format, Object arg1, Object > arg2 ) > + { > + error( format, arg1, arg2 ); > + } > + > + public void error( Marker marker, String format, Object[] argArray ) > + { > + error( format, argArray ); > + } > + > + public void error( Marker marker, String msg, Throwable t ) > + { > + error( msg, t ); > + } > + > +} > > Added: > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLoggerFactory.java > URL: > http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLoggerFactory.java?rev=1380105&view=auto > ============================================================================== > --- > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLoggerFactory.java > (added) > +++ > maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLoggerFactory.java > Mon Sep 3 01:07:31 2012 > @@ -0,0 +1,50 @@ > +package org.apache.maven.cli; > + > +/* > + * 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.codehaus.plexus.logging.LoggerManager; > +import org.slf4j.ILoggerFactory; > +import org.slf4j.Logger; > + > +/** > + * A Slf4j logger factory bridged onto a Plexus logger manager. > + */ > +public class PlexusLoggerFactory > + implements ILoggerFactory > +{ > + > + private LoggerManager loggerManager; > + > + public PlexusLoggerFactory( LoggerManager loggerManager ) > + { > + this.loggerManager = loggerManager; > + } > + > + public void setLoggerManager( LoggerManager loggerManager ) > + { > + this.loggerManager = loggerManager; > + } > + > + public Logger getLogger( String name ) > + { > + return new PlexusLogger( loggerManager.getLoggerForComponent( name, > null ) ); > + } > + > +} > > Modified: maven/maven-3/trunk/pom.xml > URL: > http://svn.apache.org/viewvc/maven/maven-3/trunk/pom.xml?rev=1380105&r1=1380104&r2=1380105&view=diff > ============================================================================== > --- maven/maven-3/trunk/pom.xml (original) > +++ maven/maven-3/trunk/pom.xml Mon Sep 3 01:07:31 2012 > @@ -56,6 +56,7 @@ > <modelloVersion>1.4.1</modelloVersion> > <jxpathVersion>1.3</jxpathVersion> > <aetherVersion>1.13.1</aetherVersion> > + <slf4jVersion>1.6.1</slf4jVersion> > > <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile> > <!-- Control the name of the distribution and information output by mvn > --> > <distributionId>apache-maven</distributionId> > @@ -203,6 +204,17 @@ > <artifactId>plexus-interpolation</artifactId> > <version>${plexusInterpolationVersion}</version> > </dependency> > + <dependency> > + <groupId>org.slf4j</groupId> > + <artifactId>slf4j-api</artifactId> > + <version>${slf4jVersion}</version> > + </dependency> > + <dependency> > + <groupId>org.slf4j</groupId> > + <artifactId>slf4j-nop</artifactId> > + <version>${slf4jVersion}</version> > + <scope>runtime</scope> > + </dependency> > <!-- Wagon --> > <dependency> > <groupId>org.apache.maven.wagon</groupId> > > -- Olivier Lamy Talend: http://coders.talend.com http://twitter.com/olamy | http://linkedin.com/in/olamy --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org