#gradle
#gradle
Вопрос:
Рассмотрим такую ситуацию: есть большой проект, компиляция которого занимает огромное время, и у меня возникают артефакты в виде отдельных файлов (jar).
Я хочу запустить модульные тесты в этом проекте без компиляции и обработки самого проекта, поэтому мне нужно удалить зависимость от задачи, но этой задачи нет в списке задач. compileJava
dependsOn
test
dependsOn
свойство test
task содержит только некоторые [file collection]
, и если я печатаю это FileCollection.files
, я получаю список файлов и каталогов, которые включают .../build/classes/main
. Я думаю, что после удаления этой записи я добьюсь успеха в удалении зависимости от compileJava
(как я понял, .../build/classes/main
это просто результат запуска compileJava
и именно поэтому compileJava
появился). Но я просто не понимаю, как удалить эту запись.
Кстати, в этом случае нет проблем с добавлением этого jar в classpath, так что это не проблема.
Я использую Gradle 1.8. Спасибо.
Комментарии:
1. Не знаете, как это будет хорошо работать? Если вы не скомпилируете исходные тексты перед выполнением тестов, будут устаревшие данные. Насколько тесты будут надежными?
2. @Opal Случай (я думаю) четко объяснен в сообщении: просто учтите, что этот jar загружен из локальной сети, и мне нужно запустить модульные тесты на нем.
Ответ №1:
compileJava
будет обновляться, если ничего не изменилось и jar
не зависит от test
. Если вы все же хотите добавить возможность запуска тестов для загруженного Jar, объявите другую Test
задачу. (Перенастройка test.classpath
также должна работать, но кажется менее желательной.)
Комментарии:
1. В этом случае
test
в существующем проекте (фактически, в нескольких проектах) есть много уже настроенных задач, поэтому я хочу использовать их повторно, а не добавлять новыеTest
задачи. Как вы думаете, почему перенастройкаclasspath
решит проблему? Вызывает ли это некоторое изменение наборов исходных текстов?2.
java
Плагин не настраивает никаких явных зависимостей задач дляTest
задач. Вместо этого зависимости задач выводятся из входных данных, таких какclasspath
. Вместо перенастройкиtest.classpath
вы также можете подумать о перенастройкеsourceSets.test.compileClasspath
илиsourceSets.test.runtimeClasspath
.3.Хм, я только что попытался удалить зависимость с
test.classpath = test.classpath.filter { file -> !file.absolutePath.contains('main') }
помощью и не добился успеха, потому что внезапноcompileTestJava
был удален изtest
зависимости, почему это может быть?