web-dev-qa-db-fra.com

JavaFX 2 en tant que dépendance Maven

Est-il possible de référencer JavaFX 2.0 comme une dépendance dans Maven dans le pom.xml pour que tout fonctionne correctement?

J'ai vu dans cette question qu'il est possible d'installer le jfxrt.jar localement, mais idéalement j'aimerais une approche plus simple où la dépendance peut être correctement résolue et téléchargée sans aucun piratage local ....

26
mikera

Non, une telle solution n'existe pas pour le moment. Je doute que ce sera le cas, car à partir de Java 1.7 mise à jour 2, JavaFX est installé avec la JVM. Il est prévu d'inclure JavaFX dans le JRE à partir de Java 1.8 (l'année prochaine). À partir de là, vous n'aurez plus besoin d'une dépendance.

Cependant, vous pouvez déjà utiliser Maven avec JavaFX, car Maven peut appeler des tâches Ant (plug-in antrun) et des tâches super Ant sont disponibles avec la distribution JavaFX. J'ai blogué à ce sujet, mais c'est en français: Creer un projet Maven pour JavaFX2 . Il vous guide tout au long du processus. Néanmoins, si vous ne comprenez pas le français, laissez un commentaire sur l'article et j'essaierai de vous aider ou regardez ici dans le forum Oracle

12
estiedi

voici une solution possible.

Créez un dossier lib dans votre répertoire de projet et placez le jfxrt.jar dans ce répertoire.

<dependency>
  <groupId>com.Oracle</groupId>
  <artifactId>javafx</artifactId>
  <version>2.2.3</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/jfxrt.jar</systemPath>
</dependency>

Et si vous voulez construire un fichier exécutable, il vous suffit d'inclure le javafx-maven-plugin. Pour plus d'informations, voir: link-to-github

<plugin>
      <groupId>com.zenjava</groupId>
      <artifactId>javafx-maven-plugin</artifactId>
      <version>1.3</version>
      <configuration>
          <mainClass>[put your application main class here]</mainClass>
      </configuration>
</plugin>
18
Andreas Stotter

L'article de Sergey suggère d'ajouter javafx comme dépendance système, qui ne devrait pas être utilisée. Au lieu de cela, vous pouvez inclure les éléments suivants dans votre POM pour installer automatiquement javafx.

    <profile>
        <id>install-javafx</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.Apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.3.1</version>
                    <executions>
                        <execution>
                            <id>install-javafx</id>
                            <goals>
                                <goal>install-file</goal>
                            </goals>
                            <phase>validate</phase>
                            <configuration>
                                <file>${jfx-runtime}/lib/jfxrt.jar</file>
                                <groupId>javafx</groupId>
                                <artifactId>javafx</artifactId>
                                <version>${jfx-version}</version>
                                <packaging>jar</packaging>
                                <javadoc>${jfx-runtime}/../docs/api.Zip</javadoc>
                        <!--<sources>no source available</sources>-->
                            </configuration>
                        </execution>
                    </executions>
                </plugin>                    
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>install-javafx-bin</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${settings.localRepository}/javafx/javafx</outputDirectory>
                                <useBuildFilters>false</useBuildFilters>
                                <resources>
                                    <resource>
                                        <directory>${jfx-runtime}</directory>
                                        <includes>
                                            <include>bin/*.dll</include>   
                                        </includes>
                                    </resource>
                                </resources>              
                            </configuration>            
                        </execution>
                    </executions>
                </plugin>
            </plugins>    
        </build>
    </profile>

Si vous souhaitez installer api docs, zippez le contenu du dossier docs/api dans docs/api.Zip. Il ne vous reste plus qu'à exécuter maven, avec le profil activé et les propriétés jfx-runtime et jfx-version définies.

7
Cephalopod