【问题标题】:Use Scala (or java) method in Gradle build script在 Gradle 构建脚本中使用 Scala(或 java)方法
【发布时间】:2017-10-31 12:06:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java scala gradle groovy


    【解决方案1】:

    这实际上取决于您的 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')
            }
    
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2015-05-04
      • 2013-09-13
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 2018-10-03
      相关资源
      最近更新 更多