【问题标题】:Execute commons-math Java class from a gradle task从 gradle 任务执行 commons-math Java 类
【发布时间】:2017-09-04 17:31:34
【问题描述】:

我需要从 jar 文件中包含的 gradle 任务类执行。

例如,我想创建一个能够执行 FastMath(http://commons.apache.org/proper/commons-math/download_math.cgi) 类的 gradle 任务。

当前的 build.gradle 脚本如下:

apply plugin: 'java'


repositories {
   mavenCentral()
}

dependencies {
    compile files('/pathToJars/commons-math3-3.6.1.jar')
}

task t1 {
    doLast {
        println FastMath.abs(3)
    }
}

我收到此错误消息:

出了什么问题: 任务 ':t1' 执行失败。 无法为 org.gradle.api.DefaultTask 类型的任务“:t1”获取未知属性“FastMath”。

我知道我缺少类导入,例如添加以下语句,但我不知道如何或在哪里:

import org.apache.commons.math3.util.FastMath;

我想知道我做错了什么或者必须如何配置脚本。任何建议将不胜感激。

编辑1:实际工作的代码如下:

apply plugin:'java'
import org.apache.commons.math3.util.FastMath;

buildscript {
  repositories {
    mavenCentral()
}

    dependencies {
      classpath 'org.apache.commons:commons-math3:3.6.1'
    }
}

task t1 {
  doLast {
      println FastMath.abs(3)
  }
}

【问题讨论】:

    标签: java gradle plugins build


    【解决方案1】:

    好吧,您的构建脚本中有多个问题。

      1234563实际上应该是compile 'org.apache.commons:commons-math3:3.6.1'。 1234563通常这是在文件的最顶层完成的,就像 Java 一样。
    1. 即使两者都做,它也不起作用,因为您将依赖项添加到实际项目的编译类路径中。相反,您需要在构建脚本的类路径中使用它,因此您需要将 dependencies 块移动到 buildscript 块内,如果您遵循建议 1,那么当然还有 repositories 块。您还需要在依赖声明中使用 classpath 而不是 compile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 2021-12-12
      • 2014-06-10
      • 2018-10-05
      相关资源
      最近更新 更多