2012-02-15 92 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