Статьи

Maven Совет: все об исполняемых банках

Maven Совет: все об исполняемых банках

Исполняемый файл jar является чрезвычайно полезным артефактом, когда речь идет о распространении вашего кода. Это означает, что, пока Java установлена ​​на клиентском компьютере, по крайней мере, на Windows и Mac, ваши пользователи могут просто дважды щелкнуть по банке, и программа запустится. Кроме того, в командной строке программа может быть легко запущена с помощью простой командной строки java -jar xxx.jar .

Нет возни с классовыми путями и зависимыми банками.

Создание исполняемого jar-файла из Maven довольно просто и включает использование maven-assembly-plugin . Это можно настроить и добавить в ваш pom.xml, как показано ниже:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.example.Main</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
            <execution>
                <phase>install</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
    </executions>
</plugin>

Давайте углубимся в детали:

<goal>single<goal> сообщает плагину, что мы хотим выполнить одну цель. Для получения дополнительной документации см. Здесь .
<phase>install<phase> сообщает плагину, что мы хотим, чтобы эта задача выполнялась как часть события жизненного цикла установки.
<descriptorRef>jar-with-dependencies</descriptorRef> сообщает плагину, что мы хотим, чтобы jar включал все зависимости.
<mainClass>com.example.Main</mainClass> сообщает плагину, какой класс должен быть запущен при выполнении jar.

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

Другая задача, которую вы хотите, чтобы Maven выполнил для вас, — это создание исполняемого файла jar как части релиза.

Для этого вам необходимо настроить плагин maven-release-plugin для создания исполняемого файла jar. Это можно сделать, как показано ниже:

1
2
3
4
5
6
7
8
9
<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.1</version>
      <configuration>
           <goals>install</goals>
           <preparationGoals>install</preparationGoals>
      </configuration>
</plugin>

Ключевым моментом здесь является конфигурация целей подготовки, которая называется релизом: подготовить. Если настройка настроена как подготовка, установка выполняется перед фиксацией (по умолчанию выполняются проверки подготовки). Добавляя install в подготовкуGoals, мы гарантируем, что наш исполняемый файл будет собран перед фиксацией. Он будет помечен тем же номером, что и релиз. Если мы переходим с версии 1.3 на 1.4, исполняемый файл jar будет называться xxx-jar-with-dependencies-1.4.jar.

Сравните, что происходит, когда вы настраиваете установку как цель завершения, а не как цель подготовки. В том же примере, что и выше, при переходе с версии 1.3 на 1.4, если установка была настроена как завершение цели, установка будет выполняться после принятия, а полученный исполняемый файл jar будет называться xxx-jar-with-dependencies-1.5-SNAPSHOT.jar. ,

Цель (в отличие от prepareGoal и completeGoal) запускается релизом: выполнить. По умолчанию это вызывает развертывание. Смотрите здесь о том, почему я настроил его для вызова установки.

Подводя итог, я надеюсь, вы сможете увидеть, как легко создать исполняемый jar-файл с Maven и выпускать его с правильным тегом release каждый раз, когда вы выпускаете свой проект.

Ссылка: Совет от Maven: все об исполняемых jar-файлах от нашего партнера по JCG Дэниела Шая из блога Rational Java .