У меня есть мультимодульный проект 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 не эмулируются.
У вас есть обходные пути?
Спасибо!