对于Flyway Maven插件,我需要调用许多使用 commons-logging (Flyway,Spring,...)进行记录的库
在Maven2中,我可以使用maven-plugin-log4j来完成此任务。这就是输出的样子:
[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.
如何在Maven3中获得干净的日志记录输出?
答案 0 :(得分:0)
您应该使用AbstractMojo.getLog()来使用Maven提供的Logger。
答案 1 :(得分:0)
好的,我发现了问题所在。
为了支持Maven 2,该插件依赖于 maven-core 版本 2.2.1 。
这个版本的maven-core引入了 slf4j-jdk14 依赖。
这在Maven 2下没有任何作用,但是在Maven 3中它被使用并且将所有日志记录输出重定向到JDK1.4日志记录(这是一个绝对痛苦的配置)。
为了将公共日志记录输出重定向到Maven 2和Maven 3中的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>