web-dev-qa-db-ja.com

EclipseのMavenを使用したJavaFXアプリケーション

EclipseのMaven ArchetypeリストにJavaFXを追加する方法、またはMavenを使用してJavaFXアプリケーションを構築するプラグインがあるかどうかを確認したいと思います。

11
Einsamer

Mavenで利用できる javafx-maven-plugin があります。

Java 8で開発する場合、そのプラグインをビルドプラグインとして配置するだけで、それ以上の依存関係はありません。

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>8.8.3</version>
    <configuration>
        <mainClass>your.main.class.which.extends.javafx.Application</mainClass>
    </configuration>
</plugin>

mvn jfx:jarを呼び出すと、target/jfx/app/yourapp-jfx.jar内にjavafx-application-jarが作成されます。また、mvn jfx:nativeを呼び出すと、ネイティブランチャー(EXEファイルなど)が作成されます。

免責事項:私はjavafx-maven-pluginのメンテナーです。

16
FibreFoX

JavaFXアプリケーションを構築するためにpom.xmlに追加する唯一のものは、この依存関係です。

<dependency>
        <groupId>com.Oracle</groupId>
        <artifactId>javafx</artifactId>
        <version>2.2</version>
        <systemPath>${Java.home}/lib/ext/jfxrt.jar</systemPath>
        <scope>system</scope>
</dependency>

これは、Java8 JREでjavafx jarをフェッチしてプロジェクトに追加するだけです。次に、maven-Assembly-pluginを使用して、依存関係を持つjarをビルドします。

それが役に立てば幸い。

7
Kwoinkwoin

この回答は https://openjfx.io/openjfx-docs/#maven にあるドキュメントからコピーされます。詳細な情報(完全なサンプルpom.xmlリファレンスを含む)は、提供されているリンクから入手できます。

PomはJavaFX Mavenプラグインを使用します。

<plugins>
    <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.3</version>
        <configuration>
            <mainClass>HelloFX</mainClass>
        </configuration>
    </plugin>
</plugins>

Mavenの依存関係を追加します。

<dependencies>
  <dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>13</version>
  </dependency>
</dependencies>

アプリケーションを実行します(例:参照サンプルのHelloFX.Javaに基づく):

mvn clean javafx:run

他の古い回答に関する注意

  1. com.zenjavajavafx-maven-pluginを参照する以前の(投票数の多い)回答は、最新のJavaFXバージョンで動作するようにコーディングされていないため、古くなっています。 Javaバージョン10+の場合、org.openjfxjavafx-maven-pluginを使用する必要があります。
  2. また、Java 10+の場合、アセンブリプラグインを参照するのみとJavaFXがJDKに含まれていることを示す回答も古くなっています。JavaFXは最近のJDKリリースではバンドルされなくなりました。代わりに、openjfx.ioとは別のSDKとして、またはMavenセントラルリポジトリからの一連のライブラリ依存関係として利用できます。
1
jewelsea
<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-Assembly-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>make-Assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>com.MainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
0
Donglai Zi

javaFXのバージョンが8.0にジャンプしたため、一般的なJavaアプリケーションとして実行します。JavaFXのサポートが組み込まれています。

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
                <execution>
                    <id>run application</id>
                    <phase>package</phase>
                    <goals>
                        <goal>Java</goal>
                    </goals>
                    <configuration>
                        <mainClass>cn.keepfight.intro.FXParamApp</mainClass>
                        <arguments>
                            <!--<argument>-Dsun.Java2d.opengl=true</argument>-->
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
0
卓建欢