Gradleプロジェクトでは、機能テスト用の新しいモジュールを追加します。このモジュールは、他のサブプロジェクトから依存関係にアクセスできる必要がありますが、完全なプロジェクトビルドの一部としては実行されません。これを試しても、まだビルドされています:
def javaProjects() {
return subprojects.findAll { it.name != 'functional-tests' }
}
configure(javaProjects()) {
...
}
project(':functional-tests') {
....
}
機能テストビルドを独自のbuild.gradleファイルに移動しても、結果は同じです。誰かがこれを達成する方法を指摘できますか?
コマンドラインまたはビルドファイルを介して機能テストを実行しないようにすることで、より良いソリューションが見つかりました。
たとえば、機能テストを除くすべてのテストを実行するには、次を実行します。
$ gradle check -x :functional-tests:check
次に、プロジェクトをビルドするときに、サブプロジェクトをビルドすることはできますが、テストの実行を除外できます。
$ gradle clean assemble -x :functional-tests:check
より良いオプションは、プロパティが設定されていない限り、ビルドファイルの機能テストを無効にすることです。たとえば、build.gradle
追加するもの:
project('functional-tests') {
test {
onlyIf {
project.hasProperty("functionalTests")
}
}
}
このように、特定のビルドプロパティを指定しない限り、機能テストは常にスキップされます。
$ gradle check
$ gradle -PfunctionalTests check
お役に立てば幸いです!
私が知る限り、deactivateまたはexcludeプロジェクトの後にそれはsettings.gradle
にincludedとして含まれています。したがって、settings.gradle
で次のように行うことができます。
include 'p1', 'p2', 'p3'
if (any_condition_here) {
include 'functional-tests'
}
build.gradle
での追加チェックが必要になります-プロジェクトが含まれている場合は、プロジェクトを構成します。
頭に浮かぶのは、-a
コマンドラインスイッチです。 here を参照してください。どういうわけか役に立つかもしれません。
サブプロジェクトを除外することはできませんが、サブプロジェクトタスクを無効にすることはできます。
gradle.taskGraph.whenReady {
gradle.taskGraph.allTasks.each {
if(it.project == project) {
it.onlyIf { false }
}
}
}
私はこのようにします:
//for all sub projects
subprojects {
if (it.name != 'project name') {
//do something
}
}
この方法で、subprojects
の特別なプロジェクトを除外できます。
allprojects
またはproject
でも使用できます。