Я пытаюсь сгенерировать .deb
файл, содержащий автономную копию моего приложения JavaFX , используя Oracle JavaFX Ant fx:deploy
Task .
Я следовал образцам официальной документации , и моя конфигурация pom.xml
выглядит следующим образом:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>install</phase>
<configuration>
<target xmlns:fx="javafx:com.sun.javafx.tools.ant">
<manifestclasspath property="manifest.classpath" jarfile="${application.dist}/${jar.name}.jar">
<classpath>
<path id="build.classpath">
<fileset dir="${application.dist}/lib">
<include name="*.jar"/>
</fileset>
</path>
</classpath>
</manifestclasspath>
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
uri="javafx:com.sun.javafx.tools.ant"
classpath="${project.basedir}:${javafx.lib.ant-javafx.jar}"/>
<fx:preferences id="fxPreferences" shortcut="true" menu="true" install="true"/>
<fx:jar destfile="${application.dist}/${jar.name}.jar">
<fx:application name="${application.title}"
mainClass="${application.main.class}"/>
<manifest>
<attribute name="Class-Path" value="${manifest.classpath}"/>
</manifest>
<!-- The target/classes folder which contains all resources and
class files -->
<fileset dir="${project.build.outputDirectory}"/>
</fx:jar>
<fx:resources id="appRes">
<fx:fileset dir="${classes.dir}" includes="*.ico"/>
<fx:fileset dir="${classes.dir}" includes="*.bat"/>
<fx:fileset dir="${classes.dir}" includes="*.conf"/>
<fx:fileset dir="${application.dist}" includes="*.jar"/>
<fx:fileset dir="${application.dist}" includes="lib/*.jar"/>
<fx:fileset dir="${java.home}/lib/ext" includes="sunjce_provider.jar" type="data"/>
<fx:fileset dir="${java.home}/bin" includes="java.exe" type="data"/>
<fx:fileset dir="${java.home}/bin" includes="javaw.exe" type="data"/>
<fx:fileset dir="${extra.dir}" includes="**"/>
</fx:resources>
<!-- This same fx:deploy task MUST be able to generate a Windows .EXE bundle as well -->
<fx:deploy verbose="true" embedJNLP="false" extension="false" includeDT="false"
offlineAllowed="true" outdir="${application.dist}"
outfile="${bundle.name}" nativeBundles="all" updatemode="background">
<fx:application name="${application.name}" mainClass="${application.main.class}"/>
<fx:resources refid="appRes"/>
<fx:preferences refId="fxPreferences" shortcut="true" menu="true"/>
<fx:info title="${application.title}" vendor="${application.vendor}"/>
<fx:platform javafx="8.0+">
<fx:jvmarg value="-Djava.security.debug=sunpkcs11"/>
</fx:platform>
</fx:deploy>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
В конце сборки (mvn clean install
),файл .deb
правильно создан в папке /target/dist/bundles
.
Но когда я установлю его с dpkg -i
, мое приложение будет установлено на /opt/${bundle.name}
.
В документации по вариантам упаковки DEB сказано, что место установки по умолчанию будет /opt
, но это не говорит мне, как я могу его изменить.
Мой вопрос: как мне установить другую установкупуть для переопределения значения по умолчанию /opt
?
Например, было бы здорово, если бы я мог установить его на /opt/company/apps/${bundle.name}
.
Я читал об использованииfx:bundleArgument
внутри FX: deploy, который имеет фиксированные параметры.Но ни одна из опций linux.*
не связана с путем установки.
Информация об окружении:
- Debian 8.10 Jessie
- JDK 1.8.0_171 64bits
- dpkg-deb 1.17.27 (amd64)
- Apache Maven 3.0.5