java - 从 gradle 任务执行 commons-math Java 类

标签 java gradle plugins build

我需要从 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)
    }
}

我收到此错误消息:

What went wrong: Execution failed for task ':t1'. Could not get unknown property 'FastMath' for task ':t1' of type org.gradle.api.DefaultTask.

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

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

最佳答案

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

  1. 如果您使用 mavenCentral() 作为存储库,请使用那里的依赖项,您将获得传递依赖项解决和自动冲突解决,并且不必将库保留在 VCS 中或任何地方,所以 compile files('/pathToJars/commons-math3-3.6.1.jar') 实际上应该是 compile 'org.apache.commons:commons-math3:3.6.1 '

  2. 正如您正确指出的,您要么必须使用完全限定的类名或导入,所以要么将 println FastMath.abs(3) 替换为 println org.apache .commons.math3.util.FastMath.abs(3),或在之前的任意位置添加import org.apache.commons.math3.util.FastMath。通常,这是在文件的最顶层完成的,就像 Java 一样。

  3. 即使您同时执行这两项操作,也不会起作用,因为您将依赖项添加到实际项目的编译类路径中。相反,您需要将它放在构建脚本的类路径中,因此您需要将 dependency block 移动到 buildscript block 内,如果您遵循建议 1,那么当然还有 存储库 block 。您还需要在依赖项声明中使用 classpath 而不是 compile

关于java - 从 gradle 任务执行 commons-math Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041836/

相关文章:

c# - 如何使用 CRM Dynamics 2013/2015 中的插件更新 CRM 中的实体和相关实体

java - 从资源中枚举特定类型的所有文件

java - 检测文本控件中的插入符号移动

gradle - Spring-Boot项目的Gradle Maven-publish引发错误:找不到父项:org.springframework.boot:项目的spring-boot-starter-parent

java - 使用 Spring Boot 和 Spock 进行集成测试

Vim YouCompleteMe 插件 - 不要下载 clang

java - 线程安全的 while 循环

java - 如何在 bash 变量中存储受计数影响的 PostgreSQL 插入查询行

android - Task.leftShift(Closure) 方法已被弃用,并计划在 Gradle 5.0 中删除

maven - 插件版本解析错误 ':maven-assembly-plugin'