在Gradle构建脚本中使用Scala(或java)方法

时间:2017-10-31 12:06:05

标签: java scala gradle groovy

我有一个Gradle构建脚本,它必须在任务中调用Scala(或Java)方法。

目前,我有src /.../ utils / lib.java

这个文件有一个带有静态方法的简单类,我想在build.gradle脚本中调用它。

但我不知道如何导入此文件并使用此方法。

1 个答案:

答案 0 :(得分:0)

这实际上取决于您的gradle脚本的设置方式以及您要完成的任务。没有看到它,很难给出具体的全面反应。以下是我所知道的两种最常用的方法,它们允许您在gradle脚本中执行代码。

1)要直接回答您的响应,要执行静态java方法,需要先编译它。如果构建的其余部分需要执行此操作,那么您需要将其构建为多项目构建。

https://docs.gradle.org/current/userguide/multi_project_builds.html

假设你有

apply plugin: 'java'

然后,您就可以使用包含静态方法的类创建一个jar,并创建一个可以执行类型ExecJavaExec的任务来执行此jar。

2)更简单,更简单的方法:

由于gradle允许你直接执行groovy代码,如果可能的话,我会尝试将逻辑从静态方法移动到gradle文件中。您可以在 org.gradle.api 上引用对象和方法来自定义许多构建操作。

https://docs.gradle.org/current/javadoc/

以下是我的build.gradle用于在编译步骤之后将资源文件复制到构建目录中,然后将其打包到jar中。

compileJava {
    doLast {
        def f = file("src/main/java/resources/db/migration")
        println "Copying SQL from {$f} to {$buildDir/db/migration}"
        copy {
            from file(f)
            into file("$buildDir/db/migration")
            include('*.sql')
        }

    }
}

这可能不是您正在寻找的简单解决方案,但我希望它能为您提供一些很好的指导。