2012-02-15 95 views
23

是否有可能在Maven中的pom.xml中将JavaFX 2.0引用为依赖项,以便一切顺利进行?作为Maven依赖关系的JavaFX 2

this question有可能在本地安装jfxrt.jar看到的,但最好我想一个简单的方法,把依赖可以得到妥善解决,没有任何地方黑客下载....

回答

12

不,这种解决方案暂时不存在。我怀疑它会永远,因为从Java 1.7更新2开始,JavaFX与JVM一起安装。从Java 1.8(明年)开始,计划将JavaFX包含在JRE中。从此,你根本不需要依赖。

但是现在已经可以使用Maven与JavaFX了,因为Maven可以调用Ant任务(antrun插件),并且JavaFX发行版中提供了超级Ant任务。我在博客上发帖,但是用法文:Creer un projet Maven pour JavaFX2。它会引导您完成整个过程。尽管如此,如果您不懂法语,请对文章发表评论,我会尽力帮助您或在此处查看the Oracle forum

+0

添加到这个已经很好的答复,我只是想指出亚当边的帖子:http://www.adam-bien.com/roller/abien/entry/how_to_compile_java_fx – 2012-06-27 15:58:54

6

谢尔盖的文章建议将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。现在,您只需运行maven,并激活配置文件并设置jfx-runtime和jfx-version属性。

+0

第一我已经看到了这个解决方案,并且相信这是做到这一点的正确方法。希望这是最主张的方式。你如何建议我们处理'$ {jfx-runtime}'和'$ {jfx-version}'。只需在''部分对它们进行硬编码? – metasim 2012-06-27 16:17:20

+0

我有属性中的硬编码版本,因为那样我可以在依赖关系中重用它。运行时路径不应该被硬编码,因为它取决于平台。 – Cephalopod 2012-07-03 07:36:18

+0

这是避免系统依赖的典型“正确”/认可方式。这也是*典型的怪异复杂的方式(以避免系统依赖) – javadba 2015-08-11 03:47:39

14

这里是一个可能的解决方案。

在您的项目目录中创建一个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> 
+0

我使用java.home而不是project.basedir,这意味着我不需要将jfxrt.jar放入我的项目中。 – disrvptor 2014-01-15 02:29:35