【发布时间】:2016-03-02 10:49:39
【问题描述】:
我有一个使用 3 个自制库的 java webapp 项目。这是布局:
Top level project A
|
+- Self-made library B (no dependencies on C or D)
+- Self-made library C (depends on D)
+- Self-made library D (no dependencies on B or C)
|
+- Other libraries that I didn't make myself
我想在这 4 个 java 项目中使用 Slf4j 登录。在我的 IDE 中,这些是 4 个独立的 Java 项目。只有 A 是一个动态 Web 项目。通过将 jar slf4j-api 添加到每个 java 项目中,我可以在相关类中实例化记录器,并且我的代码可以正常编译。
接下来,我将 slf4j-log4j binder jar 和 log4j jar(具有匹配的版本)以及 log4j.properties 文件添加到我的所有项目中。现在每个项目实际上都会使用 log4j 实现来记录一些东西
我知道我的 4 个项目的 slf4j 和 log4j 版本都是一样的,我也知道顶层项目依赖于其他 3 个项目,最后它们都会打包在一个大的 war 文件中。因此,将所有必要的 jar 单独添加到每个项目中感觉是多余的。但是,我无法删除它们,因为这样每个项目都不会单独编译。
我正在使用 maven,我想知道我应该在哪个 pom 中编写哪些依赖项,以及在哪个项目中我需要添加一个 log4j.properties 文件,以便每个项目在我的 IDE 中单独给出(编译)错误,但我也尽量减少了相同日志库的冗余包含。
我认为只添加slf4j-api对于库B,C和D就足够了,并且我只需要在webapp项目中提供一个实现(log4j + log4j binder)。但是,那我在 4 个项目中仍然有相同的 jar。
【问题讨论】:
-
如果您只在库项目中包含 api 依赖项,您能否详细说明您看到的编译器错误?