Понимание цели 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, затем запустит эти исполнения, чтобы изменить / обновить его.