2016-06-22 4 views
0

Понял, что аналогичный вопрос был опубликован ранее, но ответа не получил. Uuse both a manifest.mf and also pass jars using cp?Где определить путь к классам на стороне сервера? manifest.mf по сравнению с аргументом CLI -cp

  1. Каков наилучший способ определения classpath в java-пакетной среде? Могут ли использоваться аргументы Manifest.MF и cp через командную строку или один переопределить другой или сделать приоритет над другим?

  2. Если я использую java Java-API вместо реальных JMS * и XML *, которые доступны на сервере. Нужно ли включать каждую отдельную банку в build.gradle как «runtime»? для отслеживания фактических зависимостей? Какая была бы лучшая практика?

  3. Принимая во внимание непрерывную интеграцию, следует ли упаковывать банки с зависимостями на стороне сервера вместе с банком приложения, чтобы его автономное приложение?!

Спасибо,

+0

Появляется -cp переопределяет manifest.mf. с пониманием, что мы не используем опцию -jar. Обратитесь к комментариям в http://stackoverflow.com/questions/8843612/override-the-classpath-in-the-manifest-mf-of-a-jar?rq=1 – ravikanth

+0

Кажется, что это не связывает «предоставленные» банки (Ex, javaee, был, jboss и т. Д.). Также для сборщиков используйте api jar, когда они доступны вместо реальных банок. Например, javaee-api.jar вместо jms.jar.Также см. Комментарии, а также о том, когда добавлять jar в класс classpath по сравнению с классом класса приложения ... http://stackoverflow.com/questions/26371010/jar-dependency-application-server-classpath-vs-adding-it- to-the-application-wa? rq = 1 – ravikanth

ответ

0

Каков наилучший способ определить путь к классам в Java пакетном режиме? Можно использовать оба аргумента Manifest.MF и cp через командную строку или один переопределить другой или имеет ли приоритет над другим?

В настоящее время, это общие для создания убер jarfile, тот, который включает в себя все его зависимости вместе, а затем create an executable jar, который использует файл манифеста.

Чтобы быть понятным, если вы используете опцию командной строки -cp, вам все равно необходимо указать класс для вызова, содержащий точку входа приложения, то есть класс, содержащий public static void main(String[] args).

Если я использую JavaEE-апите баночку вместо фактического JMS * и XML * баночки , которые доступны на сервере. Нужно ли включать каждую отдельную банку в build.gradle как «runtime»? для отслеживания на фактических зависимостей? Какая была бы лучшая практика?

Лучшая область использования здесь provided, так как эти библиотеки будут предоставлены вам контейнером.

Принимая непрерывной интеграции во внимание, должны ли банки зависимостей на стороне сервера быть упакованы вместе с банкой приложения, так что его автономное приложение?!

Это очень распространенная практика сейчас, и это упрощает развертывание, поскольку все зависимости объединены вместе. Это подход, который сделал Dropwizard web service framework, используя Jetty как встроенный контейнер.

+0

1. что все еще не отвечает, если мы можем использовать манифест и -cp как для classpath, так и если есть ограничение. 2. Я считаю, что град не предоставил вместо этого эквивалентную новую зависимость, которая была бы компрометирована. 3. Кроме того, я читал, что мы не можем запускать или использовать банку внутри банки ... что это означает интермс, связав все банки вместе? – ravikanth