目前,我很难解决可能非常简单的问题:如何将一个特定于JavaFXPorts的项目作为另一个同类项目中的依赖项使用?
对于纯分离的项目,我不知道如何将它们结合在一起(不得不承认,我和Gradle不一样,因为我可能需要.)。
我考虑过使用apply plugin: 'maven'安装和抓取本地maven缓存的库。但这样就不会分离平台特定的代码(所有东西-- main、android、ios、桌面--都将合并到一个JAR文件中。
如果我将问题简化为main源代码树的纯部分,我可以创建一个独立的JavaFX项目,这应该很容易.
或者我可以通过相对路径访问另一个项目。但不管出于什么原因我都不喜欢这个主意。
JavaFXPorts的最佳实践是什么?我只是不想把一些东西一遍又一遍地复制到新的项目中(显然)。
谢谢你,丹尼尔
发布于 2017-09-13 12:10:06
这是一个非常简单的例子,说明如何设置一个Gradle多项目,其中包含两个子项目:
Common:一个普通的JavaFX (gradle)项目,带有公共代码,以后可以在其他项目中重用。GluonApplication:一个简单的胶子移动项目,它利用了普通的一个。我使用NetBeans创建Gradle根项目并添加子项目,但它也可以通过其他IDE或命令行完成。
1. Gradle根项目
创建一个Gradle根项目。设置项目名称(本例中为GradleProject)、位置和Maven组ID (本例中为com.gluonhq)和Maven版本(默认1.0-SNAPSHOT)。
2.分级通用子项目
创建一个新的Gradle子项目。选择一个名称(Common),并确保此项目的位置是GradleProject文件夹。选择一个主类(com.gluonhq.common.Common)。
添加一些代码:
package com.gluonhq.common;
public class Common {
public static double sum(double a, double b) {
return a + b;
}
}3.胶子移动子项目
添加一个胶子移动子项目与胶子插件为您的IDE。例如,选择“单一视图项目”。选择一个名称(GluonApplication),并再次确保此项目的位置是GradleProject文件夹。选择包名(com.gluonhq.application)和主类(GluonApplication)。
您可以从项目根:gradle :GluonApplication:run的命令行或从您的IDE (任务->运行)按原样运行此项目。
4.包括一个公共依赖项
从Gluon子项目中编辑build.gradle文件,并添加公共依赖项。
由于两个子项目都属于同一个根项目,所以您可以简单地这样做:
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.安装公共模块
如果计划在此或其他胶子移动项目中重用Common项目,则可以将其安装在.m2存储库中。
在命令行中,从项目的根上运行:
gradle :Common:install您将看到该项目安装在<user>/.m2/repository/com/gluonhq/common/1.0-SNAPSHOT下,包括common-1.0-SNAPSHOT.jar文件。
6.重用公共jar
最后,您可以将公共jar包含在任何项目中。
为此,从Gluon子项目编辑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'
} 保存并重新加载项目。你的通用密码就可以用了。
当然,这在您的机器上本地工作,但是您也可以将工件发布到私有或公共回购,然后您应该将正确的回购包含在上面的列表中。
https://stackoverflow.com/questions/46157900
复制相似问题