我正在尝试使用 Gluon Desktop 工具来制作JavaFX应用程序。我尝试过用以下两种方法创建一个新的Maven驱动的应用程序:
- Gluon Start Web应用程序
- *Gluon -单一视图项目 * 由Gluon plugin为IntelliJ提供的新项目模板。
在这两种情况下,提供的POM档案都会在下列行中使用名为gluonfx.target
的属性:
<target>${gluonfx.target}</target>
字符串
在POM的更下方,一对profile
元素定义了gluonfx.target
,用于ios
和android
的值。但是:
1.这些定义不会阻止IntelliJ报告错误Cannot resolve symbol 'gluonfx.target'
;和/或
1.我正在尝试构建一个Gluon Desktop应用程序,而不是iOS或Android应用程序。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>
型
1条答案
按热度按时间2vuwiymt1#
GluonFX maven/gradle插件的
target
属性定义如下:https://docs.gluonhq.com/#_target定义目标平台的字符串。默认值是
host
,它指的是当前托管进程的平台。它也可以设置为ios
以创建iOS设备的原生映像(Aarch 64),或android
以创建Android设备的原生映像(Aarch 64)。默认值:
host
如果不设置目标值,则默认为
host
,这是桌面应用程序的目标,以在Linux、macOS或Windows上运行。对于其他平台(移动的或嵌入式),您需要设置不同的值。
当Gluon示例时,请定义maven属性:
字符串
这并不适用于从GluonFX IDE插件或start.gluon.io生成的示例,尽管这并不重要,因为将使用默认的
host
。在任何情况下,由于IntelliJ确实会抱怨缺少值,因此可以很容易地修复,将这样的属性添加到pom(如果不需要,则删除移动的配置文件):
型
请注意,如果您定义了一个空的或无效的目标,当您尝试
mvn gluonfx:build
时,您将获得一个运行时异常。