2016-04-05 6 views
0

からタスクタイプを参照してくださいすると、ファイル構造である:ファイルa.gradleでGradleの別のプロジェクトここ

/some/project/a.gradle 
/some/project/common/subproject/b.gradle 

、私が持っている:

apply plugin: "java" 
class ClassThatExtendsDefaultTask extends DefaultTask { 
    ... 
} 

ファイルb.gradleで:

apply from: "$rootDir/a.gradle" 
task someTask(type: ClassThatExtendsDefaultTask) { 
    ... 
} 
compileTestJava.dependsOn someTask 
私はgralewテストを実行すると

しかし、私が得た:

Task with path 'ClassThatExtendsDefaultTask' not found in project ':common:subproject'. 

だから私の質問は、私は別のファイルにjavaタスクを参照することができる方法ですか? ClassThatExtendsDefaultTaskをa.gradleからb.gradleに貼り付けてコピーすると、実際に動作します。あなたはBUILDSRCにクラスを移動する検討すべきであるように

+0

どこから 'gradlew'を実行しますか? '$ rootDir'は正しい場所を指していますか? – cornuz

+0

$ rootDir/some/project /をポイントします。そして私は/ some/project/common/subproject /に私のgradlewを実行します。 – jack2684

答えて

0

が見えます。つまり、ClassThatExtendsDefaultTask.groovyファイルやフォルダに配置するクラスを抽出している「[ROOTDIR]/BUILDSRC/SRC /グルーヴィー/メイン」([ROOTDIR]プロジェクトのルートディレクトリです)。

また、そのディレクトリ以下のパッケージにそれを配置することを検討すべきであるが、そうならば、あなたは、クラス名をインポートまたは完全修飾する必要があります。

いくつかの利点があります。それはコンパイルされ、すべてのサブプロジェクトで利用可能です。あなたはテストコードを書くことができます(buildSrc自体は独創的なプロジェクトです)。

参照:gradle buildSrc doc

関連する問題