При загрузке Google Guice я заметил два основных "типа" артефактов, доступных на их странице загрузки :
guice-3.0.zip
;и guice-3.0-src.zip
После загрузки их обоих и проверки их содержимого они представляются двумя совершенно разными «ракурсами» выпуска Guice 3.0.
guice-3.0.zip
содержит только банку Guice и ее зависимости.guice-3.0-src.zip
, однако, не содержал фактическую банку Guice, но содержал все виды других благ: javadocs, примеры и т. Д.
Так что это заставило меня задуматься: тамдолжны быть разные «конфигурации» jar-файлов, которые выпускаются внутри Java-проектов.Скрестив эту идею с тем, что я мало знаю по инструментам сборки, таким как Ivy (который имеет концепцию артефакта конфигурации ) и Maven (который имеет концепцию артефакта scopes ), мне интересно, чтосвязь между конфигурацией / областью действия артефакта и конечным результатом (jar).
Допустим, я делал утилиту jar под названием my-utils.jar
.В дескрипторе Ivy я мог бы привести log4j как зависимость времени компиляции, а junit - как тестовую зависимость.Затем я мог бы указать, какую из этих двух «конфигураций» разрешить во время сборки.
Что я хочу знать: каково «отображение» между этими конфигурациями и содержимым файлов jar, которые создаются вконечный результат?
Например, я могу упаковать все мои compile
конфигурационные зависимости в основной my-utils.jar
, но когда-нибудь будет причина для упаковки моих test
зависимостей в my-utils-test.jar
?И какие зависимости будут иметь место в my-utils-src.jar
?
Я знаю, что это много крошечных вопросов, поэтому я думаю, что вы можете подытожить все следующим образом:
- Длякрупный проект, каковы типичные разновидности банок, которые выпускаются (например,
guice-3.0.zip
против guice-3.0-src.zip
и т. д.), каково типичное содержание каждого из них и как они соотносятся с концепцией конфигураций Ivy илиОбласти Maven?