JavaFXPorts项目作为其他JavaFXPorts项目的库

时间:2017-09-11 14:18:18

标签: gradle javafxports multi-project

我目前正在努力解决可能非常简单的问题:如何在同一类型的另一个项目中使用一个特定于JavaFXPorts的项目作为依赖项?

对于纯粹的分离项目,我不知道如何将它们组合在一起(不得不承认,我并不像Gradle那样最新,因为我可能需要......)。

我考虑过使用apply plugin: 'maven'来安装和从本地maven缓存中获取库。但是那时平台特定代码就没有分离了(所有东西 - 主,android,ios,桌面 - 将合并到一个单独的JAR文件中。

也许如果我将问题减少到main源代码树的纯部分,我可以创建一个独立的JavaFX项目,这应该很容易......

或者我可以通过相对路径访问其他项目。但无论出于何种原因,我都不喜欢这个想法。

JavaFXPorts的最佳做法是什么?我根本不知道将一些东西一遍又一遍地复制到新项目中(显然)。

提前致谢, 丹尼尔

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的示例,说明如何设置包含两个子项目的Gradle多项目:

  • Common:一个常规的JavaFX(gradle)项目,其公共代码可以在以后的其他项目中重复使用。
  • GluonApplication:一个简单的Gluon Mobile项目,它利用了常见的项目。

我已经使用NetBeans创建了Gradle Root项目并添加了子项目,但也可以从其他IDE或命令行完成。

<强> 1。 Gradle Root项目

创建Gradle Root项目。设置项目名称(本例中为GradleProject),位置和Maven组ID(本例中为com.gluonhq)和Maven版本(默认为1.0-SNAPSHOT)。

<强> 2。 Gradle Common子项目

创建一个新的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的Gluon插件添加Gluon Mobile子项目。例如,选择Single View项目。选择一个名称(GluonApplication),然后再次确保该项目的位置是GradleProject文件夹。选择包名称(com.gluonhq.application)和主类(GluonApplication)。

您可以从项目根目录中的命令行运行此项目:gradle :GluonApplication:run,或者从IDE(任务 - &gt;运行)运行。

<强> 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。重用Common jar

最后,您可以在任何项目中包含常见jar。

为此,编辑Gluon Mobile子项目中的build.gradle文件,包含本地存储库,并添加Common依赖项。

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'
} 

保存并重新加载项目。您的公共代码将可用。

当然,这可以在你的机器上本地工作,但你也可以将工件发布到私人或公共仓库,然后你应该在上面的列表中包含正确的仓库。