Processing math: 100%

2012年5月23日水曜日

Eclipse+maven+m2e+JavaFX2

WindowsのEclipseとmavenとm2eでJavaFX 2 なアプリを実行可能なjarファイルにビルドする方法。
署名とかはとりあえずパス。

準備

  1. Eclipseでm2eを使える様にしておく。
  2. JavaFX 2.1 SDKをインストールしておく。

プロジェクトの作成

settings.xmlに以下の様にプロファイルを追加。(JavaFX SDKのパスは適宜修正)
pom.xmlに直接パスを書いてもいいんだけど、一応。
<settings>
<profiles>
<profile>
<id>javafx2</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<javafx2.home>C:\Program Files\Oracle\JavaFX 2.1 SDK</javafx2.home>
</properties>
</profile>
</profiles>
</settings>
view raw settings.xml hosted with ❤ by GitHub

Eclipseを立ち上げて、普通にmavenプロジェクトを作成する。

pom.xmlを編集する。(groupId,artifactId,mainClass等は適宜修正)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.hogeika.example</groupId>
<artifactId>javafx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>javafx</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<taskdef name="jfxjar" classname="com.sun.javafx.tools.ant.FXJar"
classpathref="maven.plugin.classpath" />
<jfxjar destfile="${project.build.directory}/${project.build.finalName}">
<fileset dir="${project.build.directory}/classes" />
<application name="${project.name}"
mainClass="org.hogeika.example.javafx.HelloWorld" />
<resources>
</resources>
</jfxjar>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.sun.javafx</groupId>
<artifactId>javafx-ant</artifactId>
<version>2.1</version>
<scope>system</scope>
<systemPath>${javafx2.home}\tools\ant-javafx.jar</systemPath>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2.1</version>
<scope>system</scope>
<systemPath>${javafx2.home}\rt\lib\jfxrt.jar</systemPath>
</dependency>
</dependencies>
</project>
view raw pom.xml hosted with ❤ by GitHub


ポイントは、dependencyにscope=systemでjfxrt.jarを入れる事と、maven-antrun-pluginでantタスクとして、FXJarを指定する事。


そして、おまじないとして、package explorerでプロジェクトのルートを右クリックしてプロパティを開き、Mavenのタブでアクティブなプロファイルに"javafx2"を追加。
(実は、追加するプロファイルは何でも(無い奴でも)良さそう。これはm2eの問題(バグ?)だと思われるのだが、これをやらないとsettings.xml内のプロファイルが有効にならない?まあ、存在しないプロファイルだとビルド時にワーニング出るのである奴にしておくのが無難かど)


ビルド


プロジェクトの右クリックからRun As => Maven build でターゲットにpackageを指定。
target下にjarファイルが出来る。
あとはJavaFX runtimeがインストールされてる環境ならjarのダブルクリックで実行できる筈。

参考

maven-dependency-pluginの実行が何故必要なのか分からなかった。NetBeansでビルドする時に何かあるのだろうか?

ちなみに最初に見つけたlocal のrepositoryにjfxrt.jarとbinを入れるという方法では、Eclipse上での実行は出来るが、配布用のパッケージをビルドする時にどうしようも無くなる。

2012年3月8日木曜日

MathMLテスト

.x=f(c)

Re-rt-T0c(t)e-rtdt