Вы не должны запускать выполнение задачи из другого действия задачи (используя task.execute()
): даже если это доступно в Gradle API, его не следует использовать. Вместо этого используйте зависимости задач (см. Документацию по зависимостям задач здесь )
РЕДАКТИРОВАТЬ: из вашего комментария ниже, если вы просто хотите принудительно выполнить задачу publish
после вашей пользовательской задачи, то:
class MyGradlePlguins implements Plugin<Project> {
@Override
void apply(Project project) {
project.getPluginManager().apply("maven-publish")
BuildAndUpload buildAndUpload = project.getTasks().create("BuildAndUpload", BuildAndUpload.class);
// Make your task 'finalized by' task "publish"
buildAndUpload.finalizedBy project.tasks.getByName('publish')
// You can also have the other way:
// project.tasks.getByPath(':app:publish').dependsOn buildAndUpload
}
}
EDIT2 : из ваших последних комментариев: кажется, вы столкнулись с известной проблемой, похожей на Причины пользовательского плагина gradle: Невозможно настроить расширение «публикации»
Обходной путь должен заменить:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
repositories {
maven {
url "../maven-repo"
}
}
}
С:
publishing.publications {
mavenJava(MavenPublication) {
from components.java
}
}
publishing.repositories {
maven {
url "../maven-repo"
}
}