On Sun, Oct 4, 2015 at 5:23 PM, Tibor Digana <[email protected]> wrote:
> How is the change working on CI? Is not there any escape codes around > every line? > In Jenkins we have an ansi colors interpreter plugin. I need to check if it will work correctly with Maven jobs. Maybe for users who don't like colors or for such case where an integrated tool doesn't support it we could add a system property (or a new command line option) to deactivate it. But before this I would like firstly to see it working without breaking all builds ... > I guess jansi has or needs JNI lib or should be added for Win. Working on > all platforms? > Yes jansi library is taking care of this. I used it in the past and it worked well. Only Windows XP users may require to install an additional package : https://github.com/fusesource/jansi#windows-xp-users (But will they use a recent version of maven ....) > > On Sun, Oct 4, 2015 at 4:38 PM, Arnaud Héritier <[email protected]> > wrote: > > > Hi all, > > > > After our exchanges this week at ApacheCon Core I wanted to have a look > > at what avoided us to provide for exemple in 3.4 a colorised output... > > > > 1/ Looking at this I found several issues related to a missing export of > > classes from SLF4J: > > https://issues.apache.org/jira/browse/MNG-5787 > > https://issues.apache.org/jira/browse/MNG-5842 > > https://issues.apache.org/jira/browse/MNG-5845 > > > > I fixed it here: > > > > > https://github.com/apache/maven/commit/dfed29cc664f0e8f2f06278ff70d3037caf147f0 > > > > I hesitate to do an integration test for this. It's not really > difficult > > but does it make sense to do this only for this missing slf4j export? The > > fix is very small but the problem may be larger and highlight the fact > that > > we have no control to verify that what we export is stable over the time. > > What we should have is like a Clirr (http://clirr.sourceforge.net) > control > > but which should include all the APIs we are making visible to plugins. > > There is no simple solution to do this AFAIK. Any feedback/advice ? > > > > 2/ To come back to my original problem to provide colors in Maven > console > > you can look at these for references: > > https://issues.apache.org/jira/browse/MNG-3507 > > http://www.aheritier.net/united-colors-of-maven/ > > https://emmanuelbernard.com/blog/2015/07/27/maven-color/ > > > > In theory the change isn't more difficult than this commit : > > > > > https://git-wip-us.apache.org/repos/asf?p=maven.git;a=commitdiff;h=8cddea291c279130d437bcdf3337f16296558530 > > > > But sadly because of our usage of slf4j which has a known backward > > incompatibility issue between 1.5 and 1.6 versions it is quickly a > > nightmare because if a plugin has a direct or transitive dependency to a > > slf4j additional artifact in version <=1.5 it will fail because of the > > incompatibility like here > > > > [ERROR] Failed to execute goal > > org.apache.maven.plugins:maven-checkstyle-plugin:2.15:check > > (checkstyle-check) on project maven-checkstyle-plugin: Execution > > checkstyle-check of goal > > org.apache.maven.plugins:maven-checkstyle-plugin:2.15:check failed: An > API > > incompatibility was encountered while executing > > org.apache.maven.plugins:maven-checkstyle-plugin:2.15:check: > > java.lang.NoSuchMethodError: > > > > > org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V > > > > [ERROR] ----------------------------------------------------- > > > > [ERROR] realm = > > plugin>org.apache.maven.plugins:maven-checkstyle-plugin:2.15 > > > > > > It seems to be the case for a lot of plugins which are always using maven > > 2.x artefacts like checkstyle : > > > > arnaud@Arnauds-MacBook-Pro > > :~/Code/maven/trunks/plugins/maven-checkstyle-plugin > > $ mvn dependency:tree -Dincludes=*:*slf4j*:* -Dverbose > > > > [INFO] Scanning for projects... > > > > [INFO] > > > > > > [INFO] > > ------------------------------------------------------------------------ > > > > [INFO] Building Apache Maven Checkstyle Plugin 2.17-SNAPSHOT > > > > [INFO] > > ------------------------------------------------------------------------ > > > > [INFO] > > > > [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ > > maven-checkstyle-plugin --- > > > > [INFO] > > > org.apache.maven.plugins:maven-checkstyle-plugin:maven-plugin:2.17-SNAPSHOT > > > > [INFO] \- org.apache.maven:maven-core:jar:2.2.1:compile > > > > [INFO] +- > > org.apache.maven.wagon:wagon-webdav-jackrabbit:jar:1.0-beta-6:runtime > > > > [INFO] | +- org.apache.jackrabbit:jackrabbit-webdav:jar:1.5.0:runtime > > > > [INFO] | | \- (org.slf4j:slf4j-api:jar:1.5.3:runtime - omitted for > > conflict with 1.5.6) > > > > [INFO] | \- org.slf4j:slf4j-nop:jar:1.5.3:runtime > > > > [INFO] | \- (org.slf4j:slf4j-api:jar:1.5.3:runtime - omitted for > > duplicate) > > > > [INFO] +- org.slf4j:slf4j-jdk14:jar:1.5.6:runtime > > > > [INFO] | \- org.slf4j:slf4j-api:jar:1.5.6:runtime > > > > [INFO] \- org.slf4j:jcl-over-slf4j:jar:1.5.6:runtime > > > > [INFO] > > ------------------------------------------------------------------------ > > > > [INFO] BUILD SUCCESS > > > > [INFO] > > ------------------------------------------------------------------------ > > > > [INFO] Total time: 2.289 s > > > > [INFO] Finished at: 2015-10-02T15:39:28+02:00 > > > > [INFO] Final Memory: 20M/336M > > > > [INFO] > > ------------------------------------------------------------------------ > > > > A common use case for plugins or there librairies may often to add > slf4j > > additional artefacts to redirect to SLF4J the output of others logging > > librairies. > > > > Sadly we cannot know if the usage they have may be relevant and we have > > no solution AFAIK to blacklist some reps or to enforce the version of a > > library to use (or we have to expose all SLF4J artefacts from core and > I'm > > afraid that it will be the source of too many others incompatibility > > issues. > > > > For now I don't understand why the fact to change the logging > > implementation enforces me to fix the slf4j conflict ( > > > > > https://git-wip-us.apache.org/repos/asf?p=maven.git;a=commitdiff;h=4c293743765b46a382371f5789e769bcac89f450 > > ). > > It isn't required with master and I don't see how replacing slf4j-simple > by > > log4j2 can increase our risk to have the slf4j backward incompatibility. > > How is it possible that it works in master ? > > > > > > Like discussed with Robert, Tibor, Hervé and Tamas for now it may be a > > good idea for 3.4 to always provide the classical package with the > > classical simple-logger and to provide another package/assembly including > > the colorised version which may allow people to easily give it a try. > > > > Thanks for your help. > > > > Cheers, > > > > -- > > ----- > > Arnaud Héritier > > http://aheritier.net > > Mail/GTalk: aheritier AT gmail DOT com > > Twitter/Skype : aheritier > > > > > > -- > Cheers > Tibor > -- ----- Arnaud Héritier http://aheritier.net Mail/GTalk: aheritier AT gmail DOT com Twitter/Skype : aheritier
