使用Maven将我的JavaFX应用程序放入WAR中

时间:2011-04-21 21:12:20

标签: maven javafx war

我正在尝试将我的JavaFX应用程序编译成WAR文件,以便使用Maven在Jetty服务器上进行部署。正如我所看到的,问题在于我的webapp的index.html中的javascript:

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

当然,JavaScript会抛出一个错误,因为它缺少'archive'参数,我应该把我正在加载它的jar文件的名称。但那就是问题,没有罐子。这是与'WEB-INF / classes /'中的.class文件的战争,而不是在jar中。似乎没有太多关于如何做到这一点的文档。

我担心这是不受支持的行为。一个恼人的选择是将构建类型更改为“jar”,构建它,将构建类型更改回“war”,构建它,并且每次手动将jar放入战争中。我想如果我能找到一种自动化的方法,那就没关系,但是我不知道如何在构建过程中进行所有 INCEPTION ,或者如果这是一个好主意。< / p>

感谢您的任何想法!

2 个答案:

答案 0 :(得分:0)

在WEB-INF / classes中部署的类是Web应用程序的一部分,它们在服务器上运行。您的JavaFX类适用于在浏览器或桌面上运行的完全独立的应用程序。

您应该将它们中的两个保存在单独的项目中,然后使用Maven在WAR项目的包阶段之前将打包的JavaFX jar添加到WAR中。

答案 1 :(得分:0)

我遇到的解决方案是使用ant任务构建JavaFX应用程序(因为它无论如何都是NetBeans项目),并且通过对maven-war-plugin使用此配置包括战争中生成的jar:

<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>