web-dev-qa-db-ja.com

Maven依存関係としてのJavaFX 2

Pom.xmlでMavenの依存関係としてJavaFX 2.0を参照して、すべてがスムーズに機能するようにすることは可能ですか?

この質問 で、jfxrt.jarをローカルにインストールできることを確認しましたが、理想的には、ローカルハッキングなしで依存関係を適切に解決してダウンロードできる、よりシンプルなアプローチが欲しいです。

26
mikera

いいえ、現時点ではそのようなソリューションは存在しません。 Java 1.7 update 2から、JavaFXはJVMと一緒にインストールされるため、これが今後も続くとは思えません。 Java 1.8(来年)以降、JREにJavaFXを含める計画です。それ以降は、依存関係はまったく必要ありません。

ただし、MavenはAntタスク(antrunプラグイン)を呼び出すことができ、JavaFXディストリビューションで使用可能なスーパーAntタスクがあるため、JavaFXでMavenを使用できます。私はそれについてブログに書きましたが、それはフランス語です: Maven pour JavaFX2を作成する 。全体のプロセスを説明します。それでも、フランス語がわからない場合は、記事にコメントを残してください。私はあなたを助けようとするか、 Oracleフォーラム

12
estiedi

ここに可能な解決策があります。

プロジェクトディレクトリにlibフォルダを作成し、jfxrt.jarをそのディレクトリに配置します。

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

また、実行可能jarをビルドする場合は、javafx-maven-plugin。詳細については、以下を参照してください。 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

Sergeyの記事では、javafxをシステムの依存関係として追加することを推奨していますが、使用しないでください。代わりに、以下をPOMに含めて、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>

APIドキュメントをインストールする場合は、docs/apiフォルダーのコンテンツをdocs/api.Zipに圧縮します。プロファイルをアクティブにし、jfx-runtimeプロパティとjfx-versionプロパティを設定して、mavenを実行するだけです。

7
Cephalopod