У меня есть многопроектная сборка Gradle. У меня Sub-Project-A
, что зависит от Sub-Project-B
. Sub-Project-B
имеет зависимость от времени компиляции от SLF4J
. Я делаю не хочу Sub-Project-A
, чтобы иметь возможность компилировать любые библиотеки SLF4J
, но во время выполнения я хочу, чтобы код Sub-Project-B
был в состоянии работать.Использование Gradle Предотвращение использования сторонней библиотеки от компиляции Classpath
То, что я думал, что я мог сделать, это добавить зависимостей времени компиляции в подпроект-B, а затем добавить:
configurations {
compile.exclude group: 'org.slf4j'
}
к подпроект-A. Это предотвращает компрометацию любого кода с помощью API slf4j, но также предотвращает доступ библиотеки slf4j к исполняемому файлу Sub-Project-A, поэтому, как только будет получен код от Sub-Project-B
, я получаю исключение ClassNotFoundException.
Поскольку так было трудно работать, я думаю, что я должен делать что-то неправильно, но это не похоже на необоснованную настройку. Я хочу, чтобы один из подпроектов в моей сборке получал доступ к библиотеке сторонних разработчиков во время компиляции.
Да, это действительно кажется менее повторяющимся – erdi
Это работает очень хорошо, за исключением того, что я обнаружил, что множество других настроек, которые я настроил, также в конечном итоге вытягивает slf4j, поэтому это решение не работает в любом случае. Отмечая это как правильное решение, так как в моем ограниченном случае я изложил это мнение, это, безусловно, лучший способ справиться с этим. Благодаря! – jjathman