JavaFX 2 как зависимость от Maven
Можно ли ссылаться на JavaFX 2.0 как зависимость в Maven в pom.xml, чтобы все работало плавно?
Я видел в этот вопрос, что можно установить jfxrt.jar локально, но в идеале я хотел бы упростить подход, когда зависимость может быть правильно решена и загружается без каких-либо локальных хаков....
Ответы
Ответ 1
Нет, такого решения на данный момент не существует. Я сомневаюсь, что это будет когда-либо, так как с версии 1.7 1.7 обновления JavaFX устанавливается вместе с JVM. Планы включают JavaFX в JRE, начиная с Java 1.8 (в следующем году). С этого момента вам вообще не нужна зависимость.
Однако теперь вы можете использовать Maven с JavaFX, потому что Maven может вызывать задачи Ant (antrun plugin), и есть супер Ant задачи, доступные с дистрибутивом JavaFX. Я писал об этом, но он по-французски: Creer un projet Maven pour JavaFX2. Он проводит вас через весь процесс. Тем не менее, если вы не понимаете французский, оставьте комментарий к этой статье, и я постараюсь вам помочь или загляните сюда в форум Oracle
Ответ 2
это возможное решение.
Создайте папку 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>
И если вы хотите создать исполняемую банку, вам нужно включить 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>
Ответ 3
В статье Сергея предлагается добавить 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, запишите содержимое папки docs/api в docs/api.zip. Теперь вам просто нужно запустить maven с активированным профилем и установить свойства jfx-runtime и jfx-version.