JavaFX 8 - Comment construire un EXE avec Maven & INNO


Je n'ai pas réussi à trouver une solution de travail sur la façon de configurer Maven pour construire un EXE à partir de JavaFX avec Maven.

Projets mis en place avec E(fx)clipse en utilisant la construction.fxbuild fonctionne très bien, mais je préférerais avoir un projet maven, avec des modules dépendants plutôt que les constructions ANT de base.

J'ai vu quelques commentaires sur ZENJAVA - mais il semble que plug in a perdu toute traction et est à peu près mort.

Y a-t-il quelque chose qui peut regrouper un EXE à partir de Maven? Mon projet est un projet d'entreprise qui aura plusieurs projets et beaucoup de dépendances - j'espérais donc un moyen simple et efficace de gérer tout cela.

Merci

Author: purring pigeon, 2015-07-07

2 answers

Le plugin n'est PAS mort, juste le site officiel a été retiré en raison des coûts qu'il a produits.

Il suffit de regarder le git-référentiel pour plus de détails: https://github.com/javafx-maven-plugin/javafx-maven-plugin

Nous avons quelques exemples de configurations dans notre dossier testing: https://github.com/javafx-maven-plugin/javafx-maven-plugin/tree/master/src/it

Pour simplement construire l'EXE-installer, vous pouvez spécifier un bundler spécifique (à partir de la version 8.1.3 et jusqu').

Pour utiliser le plugin, il suffit de le mettre dans vos build-plugins:

        <plugin>
            <groupId>com.zenjava</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>8.1.3-SNAPSHOT</version>
            <configuration>
                <mainClass>com.your.amazing.mavenized.javafxapplication</mainClass>
                <bundler>EXE</bundler>
            </configuration>
        </plugin>

Avertissement: je suis l'un des mainteneurs de ce plugin;)

 7
Author: FibreFoX, 2015-07-16 06:52:22

J'ai pu le faire avec les tâches javafx-ant.

Http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 COM.myapp.application myApp pot 1.0-INSTANTANÉ MyApp http://www.somecompany.com

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <javafx.version>8.0</javafx.version>
</properties>


<repositories>
    <repository>
        <id>repo</id>
        <url>file://${project.basedir}/lib/repo</url>
    </repository>
</repositories>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
            </configuration>
        </plugin>

        <plugin>
            <!-- copy all dependencies of your app to target folder -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <configuration>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                    </configuration>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifestEntries>
                        <Main-Class>com.myApp.MainClass</Main-Class>
                        <implementation-version>1.0</implementation-version>
                        <JavaFX-Application-Class>com.myApp.MainClass</JavaFX-Application-Class>
                    </manifestEntries>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <!-- copy the properties files to the root location -->
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources-1</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/properties</outputDirectory>
                        <resources>
                            <resource>
                                <directory>properties</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>


        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <configuration>
                        <target>
                            <!-- define the deploy ANT task -->
                            <taskdef name="jfxdeploy" classname="com.sun.javafx.tools.ant.DeployFXTask"
                                classpathref="maven.plugin.classpath" />

                            <!-- define the JarSing ANT task -->
                            <!-- taskdef name="jfxsignjar" classname="com.sun.javafx.tools.ant.FXSignJarTask" 
                                classpathref="maven.plugin.classpath" / -->
                            <jfxdeploy outdir="${project.build.directory}/deploy"
                                outfile="${build.finalName}" nativeBundles="all">
                                <info title="${project.name}" />
                                <!-- set the main class of your applcation -->
                                <application name="${project.name}"
                                    mainClass="com.myApp.MainClass" />
                                <resources>
                                    <fileset dir="${project.build.directory}" includes="*.jar" />
                                    <fileset dir="${project.build.directory}/dependency"
                                        includes="*.jar" />
                                    <fileset dir="${project.build.directory}/properties" includes="*.properties"/>
                                </resources>

                                <!-- set your jvm args -->
                                <platform>
                                    <jvmarg value="-Xms512m" />
                                    <jvmarg value="-Xmx1024m" />
                                </platform>
                            </jfxdeploy>
                            <!-- you need to generate a key yourself -->
                            <!--jfxsignjar destdir="${project.build.directory}/deploy" keyStore="path/to/your/keystore" 
                                storePass="yourPass" alias="yourAlias" keyPass="keyPass"> <fileset dir="${project.build.directory}/deploy" 
                                includes="*.jar" /> </jfxsignjar -->
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>

            <dependencies>
                <dependency>
                    <groupId>com.oracle</groupId>
                    <artifactId>ant-javafx</artifactId>
                    <version>${javafx.version}</version>
                    <systemPath>${java.home}/../lib/ant-javafx.jar</systemPath>
                    <scope>system</scope>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
    <finalName>CashReceipts</finalName>
</build>

<dependencies>
    <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>8.40.9</version>
    </dependency>

    <dependency>
        <groupId>customJar</groupId>
        <artifactId>custom</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>

 2
Author: purring pigeon, 2015-07-14 16:13:46