Помещение моего приложения JavaFX в WAR с Maven - PullRequest
0 голосов
/ 22 апреля 2011

Я пытаюсь собрать приложение JavaFX в файл WAR для развертывания на сервере Jetty с использованием Maven.Проблема, на мой взгляд, заключается в javascript в index.html моего веб-приложения:

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

Конечно, JavaScript выдает ошибку, потому что в нем отсутствует параметр «архив», куда я должен поместитьимя файла JAR, из которого я загружаю это.Но это проблема, там нет банки.Это война с файлами .class в 'WEB-INF / classes /', а не в банке.Похоже, не так много документации о том, как это сделать.

Меня беспокоит, что это неподдерживаемое поведение.Раздражающей альтернативой является изменение типа сборки на «jar», сборка, изменение типа сборки обратно на «war», сборка и установка jar в войну вручную каждый раз.Я полагаю, что это было бы хорошо, если бы я мог найти автоматизированный способ сделать это, но я не знал бы, как выполнить все INCEPTION в процессе сборки, или если это даже хорошая идея попробовать.

Спасибо за любые идеи!

Ответы [ 2 ]

0 голосов
/ 04 мая 2011

Решением, к которому я пришел, было создание приложения JavaFX с использованием задачи ant (так или иначе это был проект NetBeans) и включение получающегося в результате jar в войну с использованием этой конфигурации для плагина maven-war-plugin:

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

Для тех, кто ищет решение чисто maven, вместо задачи муравья, я также смог использовать 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 голосов
/ 26 апреля 2011

Классы, развернутые в WEB-INF / classes, являются частью вашего веб-приложения и работают на сервере. Ваши классы JavaFX предназначены для совершенно отдельного приложения, которое выполняется в браузере или на рабочем столе.

Вы должны хранить их оба в отдельных проектах, а затем использовать Maven, чтобы добавить упакованный javascript JavaFX в вашу WAR до фазы пакета проекта WAR.

...