Понимание цели Exec в Maven

Я пытаюсь создать собственный установщик для приложения javafx 8, используя fxlauncher, как описано на http://fxldemo.tornado.no/

в pom.xml Приведенный пример, я не понимаю, что такое исполнение embed-manifest-in-launcher делается.

Вопрос: Может кто-нибудь объяснить, что там происходит?

Первое выполнение является прямым, оно определило класс Java, который имеет метод main и предоставил аргументы.

<execution>
    <id>create-manifest</id>
    <phase>package</phase>
    <goals>
        <goal>java</goal>
    </goals>
    <configuration>
        <mainClass>fxlauncher.CreateManifest</mainClass>
        <arguments>
            <argument>${app.url}</argument>
            <argument>${app.mainClass}</argument>
            <argument>${app.dir}</argument>
        </arguments>
    </configuration>
</execution>

<!-- Embed app.xml inside fxlauncher.xml so we don't need to reference app.xml 
    to start the app -->
<execution>
    <id>embed-manifest-in-launcher</id>
    <phase>package</phase>
    <goals>
        <goal>exec</goal>
    </goals>
    <configuration>
        <executable>jar</executable>
        <workingDirectory>${app.dir}</workingDirectory>
        <arguments>
            <argument>uf</argument>
            <argument>fxlauncher.jar</argument>
            <argument>app.xml</argument>
        </arguments>
    </configuration>
</execution>

1 ответ

Решение

Комментарий чуть выше выполнения уже дает первый намек:

Вставьте app.xml в fxlauncher.xml, чтобы нам не нужно было ссылаться на app.xml для запуска приложения

executable запись конфигурации установлена ​​на jar, так что будет работать jar команда.

Затем он передаст ему параметры uf из команды jar help мы видим, что:

-u update existing archive
-f specify archive file name

Следовательно f Опция также ожидает параметр, который действительно fxlauncher.jar запись.

Таким образом, полная команда, которая будет выполнена:

jar uf fxlauncher.jar app.xml

Который обновит существующие и предоставленные fxlauncher.jar добавление файла в app.xml файл, согласно комментарию выше.

Такое исполнение имеет обязательную силу для package этап в проекте с упаковкой jar (по умолчанию, следовательно, указывать его не нужно), который будет выполняться после привязок по умолчанию к этой упаковке для этого этапа (например, плагин Maven Jar). Следовательно, сборка сначала создаст / упакует файл jar, затем запустит эти исполнения, чтобы изменить / обновить его.

Другие вопросы по тегам