Как установить путь установки для автономного приложения JavaFX .deb (Debian) пакет - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь сгенерировать .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
...