Как установить пользовательский значок для значка javafx native package в Windows

Я пытаюсь случайно использовать иконку exe файла при создании собственного пакета javafx-упаковки. Я попытался добавить иконку в pom.xml, но пока это не сработает для меня, поскольку она дает значок по умолчанию Использование Intellij IDEA IDE, в котором содержится Pom.xml, создающий пакет command = mvn jfx:build-native Вот мой pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>com.zenjava</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>1.5</version>
            <configuration>

                <mainClass>com.demoApp.testapp.testApplication</mainClass>

                <!-- only required if signing the jar file -->
                <keyStoreAlias>example-user</keyStoreAlias>
                <keyStorePassword>example-password</keyStorePassword>
                <permissions>
                    <permission>all-permissions</permission>
                </permissions>
                <icon>${basedir}/src/main/resources/images/logoIcon.ico</icon>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>

    </plugins>
</build>

Я добавил путь значка в pom.xml ${basedir}/src/main/resources/images/logoIcon.ico который будет выполняться, пока выполняется собственный пакет, но он не будет работать для меня

Есть ли другой способ сделать это?  Пожалуйста, предложите.


Я попробовал теги fx в pom.xml с помощью ant, вот мои изменения в pom.xml

<properties>

<javafx.tools.ant.jar>${env.JAVA_HOME}\lib\ant-javafx.jar</javafx.tools.ant.jar> </properties>


<plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <id>create-launcher-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target xmlns:fx="javafx:com.sun.javafx.tools.ant">
                                <taskdef
                                        uri="javafx:com.sun.javafx.tools.ant"
                                        resource="com/sun/javafx/tools/ant/antlib.xml"
                                        classpath="${javafx.tools.ant.jar}"/>
                                <fx:application id="fxApp"
                                                name="${project.name}"
                                                mainClass="com.precisionhawk.flightplanner.FlightPlannerApp"/>
                                <fx:jar destfile="${project.build.directory}/${project.build.finalName}-launcher">
                                    <fx:application refid="fxApp"/>
                                    <fx:fileset dir="${project.build.directory}/classes"/>
                                </fx:jar>
                                <attachartifact file="${project.build.directory}/${project.build.finalName}-launcher.jar"
                                                classifier="launcher"/>
                                <fx:deploy>
                                    <fx:info>
                                        <fx:icon href="${basedir}/src/main/deploy/logoIcon.ico"></fx:icon>
                                    </fx:info>

                                </fx:deploy>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

но это не сработает.

Ответы

Ответ 1

Я просто боролся с той же проблемой, используя Zonsky большой javafx-maven-plugin. Начиная с версии 1.5, которую вы также использовали, каталог src/main/deploy будет добавлен в путь к классам. Значок, который вы хотите использовать, можно добавить туда, и он будет доступен в пути к классам для встроенного конструктора!

Я добавил src/main/deploy/package/windows/myapp.ico и, наконец, работал:)

Для вас:

  • Создайте папку src/main/deploy/package/windows/
  • Добавить значок с именем ${project.build.finalName}.ico
  • Запустить mvn jfx:build-native

Я не играл с ним широко - просто получил его на работу и хотел поделиться. Поэтому, если вы хотите использовать значок с другим именем, я не знаю, как это сделать. Пока нет. Раздел <icon>...</icon> в разделе конфигурации, похоже, предназначен для webstart, поэтому я его не использовал. Надеюсь, вы заработаете!

Ответ 2

Вам нужно посмотреть журнал при создании собственного приложения. Это скажет вам, где программа установки ищет файлы значков и с именем. Для обычного приложения Windows по умолчанию он выглядит. /package/windows/ 'appname'.ico Не могу вспомнить, откуда происходит "appname", но просто посмотрите на журнал при построении, он вам скажет. (Я использую Ant цели, вызванные из моего pom btw)

Ответ 3

     you can do this:
      '<plugin>
            <groupId>com.zenjava</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>8.8.3</version>
            <configuration>
                <vendor>YourCompany</vendor>
                <mainClass>com.alan344.MapperGenApplication</mainClass>
                <appName>mybatis-friend</appName>
                <bundleArguments>
                    <icon>${project.basedir}/src/main/resources/image/icon.ico</icon>
                </bundleArguments>
            </configuration>
        </plugin>'