Конфигурации банок и их содержимое - PullRequest
0 голосов
/ 22 февраля 2012

При загрузке 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?

1 Ответ

2 голосов
/ 22 февраля 2012

Вам нужно запустить guice-3.0.zip.Он содержит файлы .class в правильной структуре пакета.

В другом JAR, guice-3.0-src.zip, содержатся исходные файлы .java и другие вещи, которые могут оказаться полезными.Умная IDE, например IntelliJ, может использовать исходный JAR-файл, чтобы вы могли войти в код Guice с помощью отладчика и посмотреть, что происходит.

Вы также можете многому научиться, читая исходный код Guice.Это помогает увидеть, как разработчики, которые умнее вас и меня, пишут код.

Я бы сказал, что лучший пример, который я нашел, - это Эффективная библиотека Java Matrix Library в Google Code.Он имеет обширный набор тестов JUnit, который доступен вместе с исходным кодом, документами и всем остальным, что вам нужно.Я думаю, что это наиболее впечатляет.Я бы хотел подражать сам.

...