Подтвердить что ты не робот

JavaFX 2 как зависимость от Maven

Можно ли ссылаться на JavaFX 2.0 как зависимость в Maven в pom.xml, чтобы все работало плавно?

Я видел в этот вопрос, что можно установить jfxrt.jar локально, но в идеале я хотел бы упростить подход, когда зависимость может быть правильно решена и загружается без каких-либо локальных хаков....

4b9b3361

Ответ 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.