JavaFXPorts 项目作为其他 JavaFXPorts 项目的库
JavaFXPorts project as a library for other JavaFXPorts projects
我目前正在努力解决可能非常简单的问题:如何将一个 JavaFXPorts 特定项目用作另一个同类项目的依赖项?
对于完全分离的项目,我不知道如何组合它们(不得不承认,我对 Gradle 不是最新的,因为我可能需要...)。
我考虑过使用 apply plugin: 'maven'
在本地 Maven 缓存中安装和获取库。但是这样就不会分离特定于平台的代码(所有内容 - 主要、android、ios、桌面 - 将合并到一个 JAR 文件中。
也许如果我将问题减少到 main
源代码树的纯部分,我可以创建一个独立的纯 JavaFX 项目,这应该很容易...
或者我可以通过相对路径访问其他项目。但不管出于什么原因,我有点不喜欢这个想法。
JavaFXPorts 的最佳实践是什么?我根本不知道将一些东西一遍又一遍地复制到新项目中(显然)。
提前致谢,
丹尼尔
这是一个非常简单的示例,说明如何设置 Gradle 多项目,包含两个子项目:
Common
:一个普通的 JavaFX (gradle) 项目,具有可以稍后在其他项目中重用的通用代码。
GluonApplication
: 一个简单的 Gluon Mobile 项目,它使用了通用的项目。
我已经使用 NetBeans 创建了 Gradle 根项目并添加了子项目,但也可以通过其他 IDE 或命令行来完成。
1. Gradle 根项目
创建一个 Gradle 根项目。设置项目名称(本例中为 GradleProject
)、位置和 Maven 组 ID(本例中为 com.gluonhq
)和 Maven 版本(默认为 1.0-SNAPSHOT
)。
2。 Gradle 公共子项目
创建一个新的 Gradle 子项目。选择一个名称 (Common
),并确保此项目的位置是 GradleProject
文件夹。 Select 一个主要 class (com.gluonhq.common.Common
).
添加一些代码:
package com.gluonhq.common;
public class Common {
public static double sum(double a, double b) {
return a + b;
}
}
3。 Gluon 移动子项目
为您的 IDE 添加一个带有 Gluon 插件的 Gluon Mobile 子项目。例如 select 单视图项目。选择一个名称 (GluonApplication
),并再次确保此项目的位置是 GradleProject
文件夹。 Select 包名 (com.gluonhq.application
) 和主要 class (GluonApplication
).
您可以按原样 运行 这个项目,从项目根目录中的命令行:gradle :GluonApplication:run
,或从您的 IDE(任务 -> 运行)。
4.包含一个公共依赖项
编辑 Gluon Mobile 子项目中的 build.gradle
文件,并添加 Common 依赖项。
因为两个子项目属于同一个根项目,你可以简单地做:
dependencies {
compile 'com.gluonhq:charm:4.3.7'
compile project(":Common")
}
保存并重新加载项目。现在在你的代码中你可以调用 Common.sum
:
button.setOnAction(e -> label.setText("3 + 4: " + Common.sum(3, 4)));
运行 再次查看是否有效。您也可以部署到移动设备。
5.安装通用模块
如果您打算在此项目或其他 Gluon Mobile 项目中重复使用 Common
项目,您可以将其安装在您的 .m2
存储库中。
在命令行上,从项目的根目录,运行:
gradle :Common:install
您会看到项目安装在 <user>/.m2/repository/com/gluonhq/common/1.0-SNAPSHOT
下,包括 common-1.0-SNAPSHOT.jar
文件。
6.重用通用 jar
最后,您可以在您的任何项目中包含通用 jar。
为此,编辑 Gluon Mobile 子项目中的 build.gradle
文件,包括本地存储库,并添加通用依赖项。
repositories {
mavenLocal()
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
dependencies {
compile 'com.gluonhq:charm:4.3.7'
compile 'com.gluonhq:common:1.0-SNAPSHOT'
}
保存并重新加载项目。您的常用代码将可用。
当然,这可以在您的机器上本地运行,但您也可以将工件发布到私有或 public 存储库,然后您应该在上面的列表中包含正确的存储库。
我目前正在努力解决可能非常简单的问题:如何将一个 JavaFXPorts 特定项目用作另一个同类项目的依赖项?
对于完全分离的项目,我不知道如何组合它们(不得不承认,我对 Gradle 不是最新的,因为我可能需要...)。
我考虑过使用 apply plugin: 'maven'
在本地 Maven 缓存中安装和获取库。但是这样就不会分离特定于平台的代码(所有内容 - 主要、android、ios、桌面 - 将合并到一个 JAR 文件中。
也许如果我将问题减少到 main
源代码树的纯部分,我可以创建一个独立的纯 JavaFX 项目,这应该很容易...
或者我可以通过相对路径访问其他项目。但不管出于什么原因,我有点不喜欢这个想法。
JavaFXPorts 的最佳实践是什么?我根本不知道将一些东西一遍又一遍地复制到新项目中(显然)。
提前致谢, 丹尼尔
这是一个非常简单的示例,说明如何设置 Gradle 多项目,包含两个子项目:
Common
:一个普通的 JavaFX (gradle) 项目,具有可以稍后在其他项目中重用的通用代码。GluonApplication
: 一个简单的 Gluon Mobile 项目,它使用了通用的项目。
我已经使用 NetBeans 创建了 Gradle 根项目并添加了子项目,但也可以通过其他 IDE 或命令行来完成。
1. Gradle 根项目
创建一个 Gradle 根项目。设置项目名称(本例中为 GradleProject
)、位置和 Maven 组 ID(本例中为 com.gluonhq
)和 Maven 版本(默认为 1.0-SNAPSHOT
)。
2。 Gradle 公共子项目
创建一个新的 Gradle 子项目。选择一个名称 (Common
),并确保此项目的位置是 GradleProject
文件夹。 Select 一个主要 class (com.gluonhq.common.Common
).
添加一些代码:
package com.gluonhq.common;
public class Common {
public static double sum(double a, double b) {
return a + b;
}
}
3。 Gluon 移动子项目
为您的 IDE 添加一个带有 Gluon 插件的 Gluon Mobile 子项目。例如 select 单视图项目。选择一个名称 (GluonApplication
),并再次确保此项目的位置是 GradleProject
文件夹。 Select 包名 (com.gluonhq.application
) 和主要 class (GluonApplication
).
您可以按原样 运行 这个项目,从项目根目录中的命令行:gradle :GluonApplication:run
,或从您的 IDE(任务 -> 运行)。
4.包含一个公共依赖项
编辑 Gluon Mobile 子项目中的 build.gradle
文件,并添加 Common 依赖项。
因为两个子项目属于同一个根项目,你可以简单地做:
dependencies {
compile 'com.gluonhq:charm:4.3.7'
compile project(":Common")
}
保存并重新加载项目。现在在你的代码中你可以调用 Common.sum
:
button.setOnAction(e -> label.setText("3 + 4: " + Common.sum(3, 4)));
运行 再次查看是否有效。您也可以部署到移动设备。
5.安装通用模块
如果您打算在此项目或其他 Gluon Mobile 项目中重复使用 Common
项目,您可以将其安装在您的 .m2
存储库中。
在命令行上,从项目的根目录,运行:
gradle :Common:install
您会看到项目安装在 <user>/.m2/repository/com/gluonhq/common/1.0-SNAPSHOT
下,包括 common-1.0-SNAPSHOT.jar
文件。
6.重用通用 jar
最后,您可以在您的任何项目中包含通用 jar。
为此,编辑 Gluon Mobile 子项目中的 build.gradle
文件,包括本地存储库,并添加通用依赖项。
repositories {
mavenLocal()
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
dependencies {
compile 'com.gluonhq:charm:4.3.7'
compile 'com.gluonhq:common:1.0-SNAPSHOT'
}
保存并重新加载项目。您的常用代码将可用。
当然,这可以在您的机器上本地运行,但您也可以将工件发布到私有或 public 存储库,然后您应该在上面的列表中包含正确的存储库。