У меня есть проект java webapp, который использует 3 самодельные библиотеки. Вот планировка:Резервное включение библиотек slf4j
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
Я хочу использовать регистрацию Slf4j в этих 4 проектах java. В моей среде IDE это 4 отдельных Java-проекта. Только A - это динамический веб-проект. Добавляя jar slf4j-api в каждый проект java, я могу создать экземпляр регистраторов в соответствующих классах, и мой код компилируется отлично.
Далее я добавляю к каждому из моих проектов блок связывания slf4j-log4j и банку log4j (с соответствующими версиями) вместе с файлом log4j.properties. Теперь каждый проект будет фактически записывать что-то, используя реализацию log4j.
Я знаю, что каждый из моих 4 проектов имеет одну и ту же версию slf4j и log4j, и я также знаю, что проект верхнего уровня зависит от 3 других, и все они будут быть упакованными в один большой файл войны в конце. Из-за этого кажется излишним добавлять все необходимые банки в каждый проект индивидуально. Однако я не могу удалить их, потому что тогда каждый отдельный проект не будет компилироваться.
Я использую maven, и я хочу знать, в какой pom я должен написать, какие зависимости, и в каком проекте мне нужно добавить файл log4j.properties, чтобы каждый проект отдельно не приводил (компилировать) ошибки в моем IDE, но я также минимизирую избыточное включение одних и тех же журнальных библиотек.
Я думаю, что для библиотек B, C и D достаточно добавить только slf4j-api, и мне нужно предоставить реализацию (log4j + log4j binder) в проекте webapp. Однако, у меня все еще есть одна и та же банка в 4 проектах.
Можете ли вы уточнить ошибку компилятора, которую видите, только если вы включили зависимость api с вашими библиотечными проектами? – sisyphus