Экспорт проектов JAR, использующих общий проект - PullRequest
1 голос
/ 22 января 2011

У меня есть 4 различных проекта Java, созданных в Eclipse.

Один из них содержит все мои методы Utilities и Helper, которые используются в других 3 проектах.

Я не хочу копироватьодин и тот же пакет 3 раза в каждом проекте, так как я хочу иметь возможность просто редактировать его в одном месте, если потребуется.Итак, я ссылался на проект myUtilities из всех 3 других проектов.

Я буду экспортировать 3 основных проекта, и они будут работать на разных серверах независимо друг от друга как «java -jar myproject.jar»

Каждый раз, когда я делаю экспорт, myUtilities.jar не компилируется в JAR.Если я открою банку, я вижу, что ее там нет.И это будет проблемой, когда я переместу их на другие серверы.

Есть ли способ добавить пакет в источник для JAR?Или мне придется скопировать myUtilities.jar в JAVA_HOME каждого сервера?

Это мой текущий файл манифеста:

Manifest-Version: 1.0
Main-Class: com.elcool.process.alpha.RetrieverMain

Ответы [ 5 ]

1 голос
/ 22 января 2011

Вы можете разместить ссылку на внешние утилиты jar (myUtility.jar в вашем вопросе) в манифесте вашего проекта (myproject.jar).Манифест представляет собой текстовый файл внутри jar вашего проекта, и многие инструменты сборки поддерживают добавление в него информации.

Таким образом, вы можете один раз скомпилировать свой jar-файл утилиты, сделать ссылку на него в своих проектах иразверните его вместе с тремя основными проектами, возможно, в том же каталоге или в соседнем подкаталоге.

1 голос
/ 22 января 2011

Вы должны использовать «Export» -> «Runnable Jar», чтобы правильно включить зависимые проекты.

Существует три различных типа jar-файлов, в зависимости от того, хотите ли вы один jar-файл со всеми классами,один файл jar с зависимыми файлами jar и правильным путем к классу в манифесте, и один файл jar с вложенными файлами jar и специальным загрузчиком классов, понимающим это.

0 голосов
/ 22 января 2011

Каждый раз, когда я делаю экспорт, myUtilities.jar не компилируется в JAR.Если я открою JAR, я вижу, что его там нет.

Как вы его создаете?Файл jar просто переименовывается в zip с файлом манифеста, поэтому подумайте о том, чтобы создать его самостоятельно, если ваш инструмент не соответствует вашим потребностям.

0 голосов
/ 22 января 2011

Вы также можете добавить ссылки на Classpath в исполняемый файл JAR MANIFEST.MF или для более опытных пользователей использовать плагин сборки maven, который создаст артефакт со всеми его зависимостями, упакованными в один jar.

0 голосов
/ 22 января 2011

Скопировать в JAVA_HOME? Это не способ сделать что-нибудь. Ты никогда не должен этого делать.

Если это веб-проект, вам придется скопировать JAR в WEB-INF / lib для каждого проекта.

Если это не веб-проект, вам придется упаковать этот JAR-файл в основной JAR-файл и добавить его в CLASSPATH. Я предполагаю, что main - это либо исполняемый JAR с манифестом, либо у вас есть скрипт для выполнения main, чтобы вы могли инкапсулировать в него CLASSPATH.

...