1

对于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 中获得干净的日志记录输出?

4

2 回答 2

0

好的,我发现了问题所在。

为了支持 Maven 2,插件依赖于maven-core版本2.2.1

此版本的 maven-core 引入了slf4j-jdk14依赖项。

这在 Maven 2 下没有任何作用,但在 Maven 3 中,它被使用并将所有日志输出重定向到 JDK 1.4 日志(这绝对是配置的痛苦)。

为了将 commons-logging 输出重定向到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>
于 2011-05-28T08:22:13.423 回答
0

您应该使用AbstractMojo.getLog()来使用 Maven 提供的 Logger。

于 2011-05-26T17:14:05.123 回答