У меня общий вопрос о том, как правильно управлять зависимостями JAR для компиляции и развертывания. Я обычно выкладываю каталоги dev, как показано ниже, для простой библиотеки / приложения.
Calculator
src
test
build
lib
…
Есть много способов сделать это, но это мой типичный макет для типовых проектов. Мой вопрос вращается вокруг каталога lib. Обычно я помещаю файлы jar, от которых зависит мой проект, в каталог lib (log4j и т. Д.), Поэтому во время компиляции я могу установить различные пути как lib \ log4j.jar или что-то подобное. Теперь, когда мы создаем распространяемый пакет, я старался отразить это расположение.
dist
Calculator.jar
lib
log4j.jar
addition.jar
subtraction.jar
Это позволяет мне либо настроить скрипт, который устанавливает мой classpath относительно того, где находится основной jar, либо я могу установить classpath в манифесте для основного jar (в данном случае Calculator.jar). Это может или не может быть лучший способ сделать это, но он сработал для меня и, кажется, является общепринятым способом борьбы с зависимостями других разработчиков, с которыми я говорил об этом.
Мой вопрос возникает тогда, когда я хочу создать новый проект, который использует какой-то другой проект, который я изложил таким образом.
Итак, допустим, я хочу создать новый проект калькулятора, который использует проект калькулятора из примера выше. Если я буду следовать той же схеме, я получу что-то вроде следующего:
dist
ScentificCalculator.jar
lib
Calculator.jar
lib
Log4j.jar
addition.jar
subtraction.jar
Конечно, это может выйти из-под контроля, чем глубже ваше дерево зависимостей:
SuperWhizBangCalculator.jar
lib
ScientificCalculator.jar
lib
Calculator.jar
lib
log4j.jar
addition.jar
subtraction.jar
Другой вариант - расплющить дерево:
SuperWhizBangCalculator
lib
ScientificCalculator.jar
Calculator.jar
log4J.jar
addition.jar
subtraction.jar
Но что-то просто не похоже на это. Вы теряете структуру, которая сообщает вам, от каких библиотек зависит, от какого компонента вы зависите. Поэтому мне было интересно, существует ли стандартный способ сделать это для сообщества с пониманием того, что никогда не будет единого размера, подходящего всем.
Спасибо за время ...