Есть ли какой-либо недостаток для помещения кода API в JAR вместе с классами? - PullRequest
8 голосов
/ 22 мая 2010

В Java, если вы упакуете файлы исходного кода ( .java) в jar вместе с классами ( .class), большинство eclipse в IDE будут отображать комментарии javadoc для завершения кода.

IIRC Есть несколько проектов с открытым исходным кодом, которые делают это, как JMock.

Допустим, я четко отделил свой код API от кода реализации, так что у меня есть что-то вроде myproject-api.jar и myproject-impl.jar. Есть ли какая-то причина, по которой мне не следует помещать исходный код в мой myproject-api. баночка?

Из-за производительности? Размер

Почему другие проекты не делают этого?

РЕДАКТИРОВАТЬ: Кроме проблемы с загрузкой Maven, повредит ли что-нибудь, чтобы поместить мои исходники в jar классов для поддержки как можно большего числа разработчиков (maven или нет)?

Ответы [ 2 ]

6 голосов
/ 22 мая 2010

Обычно из-за причины распространения:

если вы храните отдельные двоичные файлы и источники, вы можете загрузить только то, что вам нужно.
Например:

  • myproject-api.jar иmyproject-impl.jar
  • myproject-api-src.jar и myproject-impl-src.jar
  • myproject-api-docs.zip и myproject-impl-docs.zip

Now, m2eclipse - Maven для Eclipse может автоматически загружать источники

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true 

Теперь он также может генерировать правильный pom для предотвращения распространения jar-кода источника или javadoc, когда кто-либо объявляетзависимость от вашего фляги.
Комментарии ОП:

также не может представить, что размер загрузки является проблемой (я имею в виду, что в 2010 году пара 100К не должна быть проблемой).

Ну, на самом деле это (то есть "размер") является проблемой.
Maven уже страдает от синдрома "загрузка половины интернета при первой сборке".
Если это скачивает также исходники и / или javadocs, которые становятся действительно утомительными.

Плюс, аспект "распространения" включает в себя развертывание : на сервере webapp естьнет реального преимущества в развертывании jar-файла с источниками .

Наконец, если вам действительно нужно связать источники с двоичными файлами, этот вопрос SO по Maven может помочь .

1 голос
/ 22 мая 2010

Используя maven, подключите источники автоматически следующим образом:

http://maven.apache.org/plugins/maven-source-plugin/usage.html

и подобные javadocs:

http://maven.apache.org/plugins/maven-javadoc-plugin/jar-mojo.html

Таким образом, они будут автоматически подхвачены

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true 

или m2eclipse

...