我需要从jar文件中包含的gradle任务类执行。
例如,我想创建一个gradle任务来执行类fastmath(http://commons.apache.org/proper/commons-math/download_math.cgi).
当前的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)
}
}
1条答案
按热度按时间lx0bsm1f1#
嗯,您的构建脚本中有多个问题。
如果你使用
mavenCentral()
作为存储库,从那里使用依赖关系,您将获得可传递的依赖关系解决方案和自动冲突解决方案,并且您不必将libs保存在vcs中或任何地方,因此compile files('/pathToJars/commons-math3-3.6.1.jar')
实际上应该是compile 'org.apache.commons:commons-math3:3.6.1'
.正如您正确指出的,您要么使用完全限定的类名,要么使用导入,因此
println FastMath.abs(3)
由println org.apache.commons.math3.util.FastMath.abs(3)
,或添加import org.apache.commons.math3.util.FastMath
以前的任何地方。通常,这是在文件中最上面完成的,就像java一样。即使两者都要做,也不会起作用,因为您将依赖项添加到实际项目的编译类路径中。相反,您需要将它放在构建脚本的类路径中,因此您需要移动
dependencies
a内的块buildscript
如果你遵循建议1,那么当然repositories
阻止。你还需要classpath
而不是compile
在依赖关系声明中。