2011-04-21 69 views
0

我正在嘗試使用Maven將我的JavaFX應用程序編譯爲用於在Jetty服務器上部署的WAR文件。這個問題,在我看來,是在我的web應用程序的index.html中的javascript:將我的JavaFX應用程序放入帶有Maven的WAR中

<script> 
    javafx(
     { 
       draggable: true, 
       width: 600, 
       height: 290, 
       code: "my.app.package.MyApp", 
       name: "MyApp", 
       id: "app" 
     } 
    ); 
</script> 

當然,JavaScript的拋出一個錯誤,因爲它缺少在那裏我應該把這個名字的「存檔」參數我正在從中加載這個jar文件。但那是問題,沒有罐子。這是與'WEB-INF/classes /'中的.class文件的爭鬥,而不是在jar中。似乎沒有太多關於如何做到這一點的文檔。

我的問題是,這是不受支持的行爲。一個令人討厭的選擇是將構建類型更改爲「jar」,構建它,將構建類型更改爲「war」,構建它,然後每次手動將jar放入戰爭中。我想如果我能找到一種自動的方式來做這件事就沒問題,但我不知道如何在構建過程中全部使用INCEPTION,或者如果這是一個好主意嘗試。

感謝您的任何想法!

回答

0

我來的解決方案是建立使用Ant任務的JavaFX應用程序(因爲它是一個NetBeans項目反正),並通過使用這種配置的Maven的戰爭插件,包括在戰爭中所產生的罐子:

<configuration> 
    <webResources> 
    <!-- Include the jar build inside the war --> 
    <resource> 
     <directory>dist</directory> 
     <includes> 
     <include>MyJavaFXApp.jar</include> 
     </includes> 
    </resource> 
    </webResources> 
</configuration> 

對於那些尋找純maven解決方案而不是ant任務的人,我還能夠使用maven-jar-plugin來專門構建一個jar(項目包裝類型仍然是'war') ,然後我將其與上述方法一起使用。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>make-a-jar</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>jar</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
0

在WEB-INF/classes中部署的類是Web應用程序的一部分,它們在服務器上運行。您的JavaFX類適用於在瀏覽器或桌面上運行的完全獨立的應用程序。

您應該將它們中的兩個保存在單獨的項目中,然後在WAR項目的包階段之前使用Maven將打包的JavaFX jar添加到WAR中。

相關問題