Java 重定向Maven3 Mojo中的commons日志记录输出
对于Maven插件,我需要调用许多使用公共日志记录的库(Flyway,Spring,…) 在Maven2中,我可以用来实现这一点。这是输出的样子:Java 重定向Maven3 Mojo中的commons日志记录输出,java,logging,maven-2,maven-3,apache-commons-logging,Java,Logging,Maven 2,Maven 3,Apache Commons Logging,对于Maven插件,我需要调用许多使用公共日志记录的库(Flyway,Spring,…) 在Maven2中,我可以用来实现这一点。这是输出的样子: [INFO] [flyway:history {execution: default-cli}] [INFO] Hsql does not support locking. No concurrent migration supported. 但是,在Maven3中,这并不太有效: [INFO] --- flyway-maven-plugin:1.
[INFO] [flyway:history {execution: default-cli}]
[INFO] Hsql does not support locking. No concurrent migration supported.
但是,在Maven3中,这并不太有效:
[INFO] --- flyway-maven-plugin:1.3.2-SNAPSHOT:history (default-cli) @ flyway-sample ---
15.04.2011 09:49:10 com.googlecode.flyway.core.dbsupport.hsql.HsqlDbSupport <init>
INFO: Hsql does not support locking. No concurrent migration supported.
[INFO]——flyway maven插件:1.3.2-SNAPSHOT:history(默认cli)@flyway示例---
2011年4月15日09:49:10 com.googlecode.flyway.core.dbsupport.hsql.HsqlDbSupport
信息:Hsql不支持锁定。不支持并发迁移。
如何在Maven3中获得干净的日志输出?您应该使用Maven提供的记录器。好的,我发现了问题所在 为了支持Maven 2,插件依赖于Maven core版本2.2.1 这个版本的maven core引入了一个slf4j-jdk14依赖项 在Maven2下,这没有任何作用,但在Maven3中,它会被使用,将所有日志输出重定向到JDK1.4日志记录中(这是一个非常麻烦的配置) 为了在Maven 2和Maven 3中将commons日志输出重定向到Maven日志,我现在进行了以下设置:
<!-- Stop redirecting to JDK 1.4 logging -->
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>2.2.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Log4J to Maven Log -->
<dependency>
<groupId>com.pyx4j</groupId>
<artifactId>maven-plugin-log4j</artifactId>
<version>1.0.1</version>
</dependency>
<!-- Slf4j to Log4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
org.apache.maven
马文堆芯
2.2.1
org.slf4j
slf4j-jdk14
com.pyx4j
maven-plugin-log4j
1.0.1
org.slf4j
slf4j-log4j12
1.5.6
这对我没有什么帮助,因为记录的绝大多数代码都不是特定于maven的(想想flyway core,spring,…)。AbstractMojo使用了一个函数,它反过来只执行System.out.println(“[”+prefix+“]”+sWriter.toString());-因此,您可以配置他们的记录器来执行相同的操作。也许maven2.x提供了这样的配置?有一个MavenLoggerManager和一个PrintStreamLogger可能会有所帮助。。但它看起来没那么好:/