0

ここで答えをたどってみました

Gradleで私のタスクに依存するようにタスクをオーバーライドする方法

しかし、それは失敗します

タスク セットでプロパティ 'setupAll' が見つかりませんでした。

私はいくつかのことを試しました

  1. サブプロジェクト セクションのタスクを master:copyJars に依存させるが、それは失敗する
  2. 以下の解決策
  3. うまくいかなかったタスクを取り除きました。

build.gradle ファイルと settings.gradle ファイルが 1 つしかありません。設定gradleファイルは

include 'master', 'toneserver','webserver'

マスターbuild.gradleファイルは(具体的には、setupAllの2つのインスタンスを検索してください。何らかの問題があるためです

//NOTE: Currently this file is for dependency management only but we would like
// to convert all of the build to gradle from the ant files.  We needed to add dependency 
// management so did so with gradle first as a first step in the process of evolution

allprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'

    buildDir = 'output'

    task hello << { task -> println "I'm $task.project.name" }
    build << { task -> println "MASTER: I'm building now classpath=$sourceSets.main.compileClasspath.files" }
}

project(':toneserver') {
    dependencies {
        compile fileTree(dir: 'play-1.2.4/framework/lib', include: '*.jar')
        compile fileTree(dir: 'play-1.2.4/framework', include: '*.jar')

        compile project(':master')
        compile project(':webserver')
    }

    task eclipse(overwrite: true) {
    }

}

project(':webserver') {
    dependencies {
        compile fileTree(dir: 'play-1.2.4/framework/lib', include: '*.jar')
        compile fileTree(dir: 'play-1.2.4/framework', include: '*.jar')

        compile project(':master')
    }

    //playframework has it's own generation of .classpath and .project fils so do not 
    //overwrite their versions
    task eclipse(overwrite: true) {
    }
}

project(':master') {
    project.ext.genLibDir = file('lib')
    project.ext.fixedLibDir = file('libother')

    repositories {
         mavenCentral()
    }

    dependencies {
        compile group: 'org.hibernate',   name: 'hibernate-entitymanager', version: '4.1.4.Final'
        compile group: 'org.slf4j',       name: 'slf4j-api',               version: '1.6.6'
        compile group: 'org.slf4j',       name: 'log4j-over-slf4j',        version: '1.6.6'
        compile group: 'ch.qos.logback',  name: 'logback-core',            version: '1.0.6'
        compile group: 'joda-time',       name: 'joda-time',               version: '2.1'
        compile group: 'com.google.inject',name: 'guice',                  version: '3.0'
        compile group: 'com.google.protobuf',name: 'protobuf-java',        version: '2.4.1'


        //to be erased soon
        compile group: 'commons-configuration',name:'commons-configuration',version: '1.8'
        compile group: 'org.jboss.netty', name: 'netty',                   version: '3.2.7.Final'

        //compile group: 'org.asteriskjava',name: 'asterisk-java',         version: '1.0.0.M3'            
        compile fileTree(dir: project.ext.fixedLibDir, include: '*.jar')
    }

    task('copyJars') { 
        ext.collection = files { genLibDir.listFiles() }
        delete ext.collection
        copy { from configurations.compile into genLibDir }
        copy { from fixedLibDir into genLibDir }
    }

        tasks.setupAll.dependsOn(copyJars)
}

subprojects {
    version = 'Developer-Build'

    //configurations.compile {
    //  exclude group: 'javax.jms',        module: 'jms'
    //  exclude group: 'com.sun.jdmk',     module: 'jmxtools'
    //  exclude group: 'com.sun.jmx',      module: 'jmxri'
    //}

    task('setupAll', dependsOn: ['eclipse']) {
        description = 'Update jars from remote repositories and then fix eclipse classpath for master project'

    }

    hello << {println "- I depend on stserver"}

    build << { println "subproject:source sets=$sourceSets.main.java.srcDirs" }
}

task release << { println "putting together release" }

//TODO: have a release task AND if version is null when running the release task
//throw an exception telling the user to pass in a version with "./build -Dversion=xxxx"
//The automated build will call the release task with a version number like that
gradle.taskGraph.whenReady {taskGraph ->
    if (taskGraph.hasTask(release) && version == 'Developer-Build') {
        throw new StopExecutionException("You must specify -Dversion=<some version> to run the release task")
    } else {
        version = '1.0-SNAPSHOT'
    }
}

これで何が起こっているのですか?他のものに依存するようにタスクをオーバーライドすることは、かなり簡単に機能するはずです(おそらく、その構文はまだ間違っていますか?)

ありがとう、ディーン

4

1 に答える 1

0

気にしないでください、ばかげた間違い、私のタスクがサブプロジェクトにあり、外にある必要があり、必要だったことを忘れていました : 同様に、新しい setupAll はサブプロジェクトの外にあり、

task('setupAll', dependsOn: [':master:copyJars', 'eclipse']) {
    description = 'Update jars from remote repositories and then fix eclipse classpath for master project'

}
于 2012-06-25T13:14:10.570 に答える