2

Gradle ビルド スクリプトで使用するカスタム タスク/プラグイン (どちらも動作を拒否) を作成しようとしています。

groovy プラグインを使用しており、build.gradle 内ではなく、別のファイルでタスク/プラグインを宣言したいと考えています。

私のプロジェクトツリーは次のとおりです。

/project
.
|-gradle
|-src
|---main
|-----groovy
|-----java
|-----resources
|---test
|-----groovy
|-----java
|-----resources
|-build.gradle

私がやろうとしたことは、タスク/プラグインクラスを内部に作成src/main/groovyし、build.gradle.

少し例を挙げましょう。

src/main/groovy/mypackage/TestTask.groovy:

package org.gradle.mypackage

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

public class TestTask extends DefaultTask {

    @TaskAction
    def doAction() {

    }
}

build.gradle

plugins {
    id 'groovy'
}

sourceCompatibility = 1.7

repositories {
    mavenCentral()
}

dependencies {

    compile(
        localGroovy(),
        gradleApi()
    )

    testCompile(
        [ group: 'junit', name: 'junit', version: '4.11' ]
    )

}

task testTask(type: TestTask)

gradle.build (クリーン、ビルドなど) を使用して何かをしようとすると、次のエラーが発生します。

エラー:(116, 0) ルート プロジェクト 'project' でプロパティ 'TestTask' が見つかりませんでした。

私は何を間違っていますか?使用import中のタスクを試みましたが、それもうまくいきませんでした。build.gradleimport mypackage.TestTask

グルーヴィーなファイルはまったくコンパイルされないように見えますが、ドキュメントで読んだことから、グラドルはそれらをコンパイルしてクラスパスに追加する必要があります。

4

2 に答える 2

2

ここに行きます:「in-stackoverflow」ソリューション。

プロジェクトでフォルダー buildSrc/src/main を作成します

buildSrc/ に build.gradle を作成することを忘れないでください

apply plugin: 'groovy'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

次に、メイン フォルダーに、タスクを含むパッケージを作成します。次に例を示します。pl.myAwesomeCompany.gradle.tasks

package pl.myAwesomeCompany.gradle.tasks

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.incremental.IncrementalTaskInputs

class ExampleTask extends DefaultTask {

    @TaskAction
    void execute(IncrementalTaskInputs inputs) {
        println inputs.incremental ? "CHANGED inputs considered out of date"
            : "ALL inputs considered out of date"
    }
}

出来上がり!プロジェクトでプラグインを使用できるようになりました。

import package pl.myAwesomeCompany.gradle.tasks.ExampleTask
task incremental(type:ExampleTask)
于 2016-02-20T09:38:51.107 に答える
0

これはどのように機能するかではありません。パッケージにまとめられたカスタム プラグインとタスクを提供する必要がある場合は、コード全体をbuildSrcディレクトリの下に置きます。以下で$GRADLE_HOME/samples/multiProjectBuildSrc、それがどのように行われるべきかの優れた例を見つけることができます。

$GRADLE_HOME- gradle インストール ディレクトリ。

于 2014-12-09T14:08:15.527 に答える