首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle:未能创建任务或类型taskDef,名称未定义

Gradle:未能创建任务或类型taskDef,名称未定义
EN

Stack Overflow用户
提问于 2014-11-16 19:00:13
回答 1查看 1.3K关注 0票数 2

我在创建蚂蚁任务时遇到了问题,我不知道发生了什么事。

这是我的build.gradle:

代码语言:javascript
复制
apply plugin: 'java'

/** Create a classpath for the jarbundler ant-task */
configurations  {
    jarbundler
}

dependencies {
    jarbundler 'net.sourceforge.jarbundler:jarbundler:2.1.0'
}


repositories {
    maven {
        url 'http://ooo-maven.googlecode.com/hg/repository'
    }
}


task distMac(dependsOn: assemble) << {
    println "Create MacOSX distribution....."
    println "Classpath: " + configurations.jarbundler.asPath

    ant.taskDef(name: 'jarbundler',
            classname: 'net.sourceforge.jarbundler.JarBundler',
            classpath: configurations.jarbundler.asPath)
}

在以下几个方面都失败了:

代码语言:javascript
复制
Dieters-MBP-3:jdbexp rehdie$ gradle distMac
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:distMac
Create MacOSX distribution.....
Classpath: /Users/rehdie/.gradle/caches/modules-2/files-2.1/net.sourceforge.jarbundler/jarbundler/2.1.0/84f1fbcf60aeb90560ba3d554b72217c0836935e/jarbundler-2.1.0.jar
:distMac FAILED

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/rehdie/development/projects/jdbexp/build.gradle' line: 25

* What went wrong:
Execution failed for task ':distMac'.
> Problem: failed to create task or type taskDef
  Cause: The name is undefined.
  Action: Check the spelling.
  Action: Check that any custom tasks/types have been declared.
  Action: Check that any <presetdef>/<macrodef> declarations have taken place.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 2.9 secs

在ant文件中做同样的工作就像预期的那样:

代码语言:javascript
复制
<project name="jdbexp_wrapper" default="dist_osx">

    <taskdef name="jarbundler"
             classpath="/Users/rehdie/.gradle/caches/modules-2/files-2.1/net.sourceforge.jarbundler/jarbundler/2.1.0/84f1fbcf60aeb90560ba3d554b72217c0836935e/jarbundler-2.1.0.jar"
             classname="net.sourceforge.jarbundler.JarBundler"/>


    <target name="hello">
        <echo>Hallo</echo>
    </target>

</project>

有什么想法吗?

jarbundler存在于/Users/rehdie/.gradle/caches/modules-2/files-2.1/net.sourceforge.jarbundler/jarbundler/2.1.0/84f1fbcf60aeb90560ba3d554b72217c0836935e/jarbundler-2.1.0.jar中,它包含一个名为net.sourceforge.jarbundler.JarBundler的类。

不幸的是,我没有在谷歌上找到任何提示……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-16 19:28:52

taskdef区分大小写,并且应该都是小写的:

代码语言:javascript
复制
task distMac(dependsOn: assemble) << {
    println "Create MacOSX distribution....."
    println "Classpath: " + configurations.jarbundler.asPath

    ant.taskdef(name: 'jarbundler',
            classname: 'net.sourceforge.jarbundler.JarBundler',
            classpath: configurations.jarbundler.asPath)
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26960819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档