Как: SLF4J с несколькими привязками в многомодульном проекте GWT Maven? - PullRequest
2 голосов
/ 07 ноября 2011

У меня есть мультимодульный проект Maven GWT.
Планировка:

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).
Я бы согласился, но я хочу использовать конкретную привязку SLF4J для каждого модуля maven. Так что в моем случае 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>

клиент-модуль / 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 не эмулируются.

У вас есть обходные пути? Спасибо!

...