如何:SLF4J在GWT Maven多模块项目中具有多个绑定?

时间:2011-11-07 16:22:11

标签: gwt maven slf4j

我有一个GWT多模块Maven项目 布局:

pom.xml  
client-module  //client side: contains some base classes. I use JDK's java.util.log so that it logs on Firebug's console
server-module  //server side: extends some code from client-module (so it uses JUL) for common behaviour. I use log4j

客户端模块是共享代码 我想全局使用SLF4J,但似乎我不能使用多个绑定 (每个项目多个绑定,每个maven模块单个绑定)。
我同意,但我想使用每个maven模块的特定SLF4J绑定。 所以我的情况是客户端模块的SLF4J-JDK和服务器模块的SLF4J-log4j。

相关代码: 的的pom.xml

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.3</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.6.3</version>
    </dependency>
     <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.3</version>
    </dependency>

client-module /BaseFoo.java

public abstract class BaseFoo {
private static final Logger logger = LoggerFactory.getLogger(BaseFoo.class.getName());
// ... interesting stuff
} 

服务器模块 /Foo.java

public class Foo extends BaseFoo {
private static final Logger logger = LoggerFactory.getLogger(BaseFoo.class.getName());
// ...more interesting stuff
}

我已经尝试根据文档进行配置,但它不起作用。 问题是SLF4J需要准备好GWT。 我得到的错误:

[ERROR] Line 23: No source code is available for type org.slf4j.Logger; did you forget to inherit a required module?

这意味着GWT将BaseFoo类编译为Javascript(这就是为什么它在客户端模块中运行在客户端)但由于SLF4j中的类/源代码未被模拟而失败。

你有解决方法吗? 谢谢!

0 个答案:

没有答案