我正在尝试使用 Gluon Desktop 工具来制作 JavaFX 应用程序。我尝试用这两种方式创建一个新的 Maven 驱动的应用程序:
在这两种情况下,提供的 POM 文件在这一行中使用名为
gluonfx.target
的属性:
<target>${gluonfx.target}</target>
在 POM 的更下方,有几个
profile
元素为 gluonfx.target
和 ios
的值定义 android
。但是:
Cannot resolve symbol 'gluonfx.target'
;和
gluonfx.target
属性是否在 POM 之外定义?或者我应该定义该属性?如果是的话,在哪里以及如何进行?我应该向 POM 的 properties
元素添加一个元素吗?如果是这样,该属性的可能值是多少?或者桌面应用程序的开发缺少 profile
元素?
这里是完整提供的 POM(我修改为使用 Java 20):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>work.basil.example</groupId>
<artifactId>gluon-singleviewproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Gluon-SingleViewProject</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>20</maven.compiler.release>
<javafx.version>20</javafx.version>
<attach.version>4.0.18</attach.version>
<gluonfx.plugin.version>1.0.19</gluonfx.plugin.version>
<javafx.plugin.version>0.0.8</javafx.plugin.version>
<mainClassName>work.basil.example.GluonApplication</mainClassName>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>com.gluonhq</groupId>
<artifactId>charm-glisten</artifactId>
<version>6.2.3</version>
</dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<artifactId>display</artifactId>
<version>${attach.version}</version>
</dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<artifactId>lifecycle</artifactId>
<version>${attach.version}</version>
</dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<artifactId>statusbar</artifactId>
<version>${attach.version}</version>
</dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<artifactId>storage</artifactId>
<version>${attach.version}</version>
</dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<artifactId>util</artifactId>
<version>${attach.version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>Gluon</id>
<url>https://nexus.gluonhq.com/nexus/content/repositories/releases</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.plugin.version}</version>
<configuration>
<mainClass>${mainClassName}</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.plugin.version}</version>
<configuration>
<target>${gluonfx.target}</target>
<attachList>
<list>display</list>
<list>lifecycle</list>
<list>statusbar</list>
<list>storage</list>
</attachList>
<mainClass>${mainClassName}</mainClass>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>ios</id>
<properties>
<gluonfx.target>ios</gluonfx.target>
</properties>
</profile>
<profile>
<id>android</id>
<properties>
<gluonfx.target>android</gluonfx.target>
</properties>
</profile>
</profiles>
</project>
GluonFX maven/gradle 插件的
target
属性在这里定义:https://docs.gluonhq.com/#_target
定义目标平台的字符串。默认值为
,指当前托管该进程的平台。还可以将其设置为host
为 iOS 设备 (Aarch64) 创建本机映像,或设置为ios
为 Android 设备 (Aarch64) 创建本机映像。android
默认:
host
如果不设置目标值,则默认为
host
,这是桌面应用程序的目标,可在 Linux、macOS 或 Windows 上运行。
对于其他平台(移动或嵌入式),您需要设置不同的值。
在 Gluon 采样时,定义 Maven 属性:
<properties>
...
<gluonfx.target>host</gluonfx.target>
</properties>
这不适用于从 GluonFX IDE 插件或 start.gluon.io 生成的示例,尽管这并不重要,因为将使用默认的
host
。
在任何情况下,由于 IntelliJ 确实会抱怨缺少值,因此可以轻松修复此问题,将此类属性添加到 pom 中(如果不需要,则删除移动配置文件):
<properties>
...
<gluonfx.target>host</gluonfx.target>
</properties>
<plugins>
<plugin>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.maven.plugin.version}</version>
<configuration>
<target>${gluonfx.target}</target>
...
</plugin>
...
</plugins>
<profiles>
<profile>
<id>ios</id>
<properties>
<gluonfx.target>ios</gluonfx.target>
</properties>
</profile>
...
</profiles>
请注意,如果您定义了一个空的或无效的目标,当您尝试
mvn gluonfx:build
时,您将收到运行时异常。