Сделать чистое задание перед любым другим

Я хотел бы сделать задачу releaseBuild, которая будет выполнять чистую задачу перед сборкой проекта.

Я подготовил скрипт, который прекрасно работает для очистки перед выполнением задачи releaseBuild, а не для очистки непосредственно перед завершением, благодаря jar.mustRunAfter(clean),

Тем не менее, я хотел бы также иметь возможность выполнить задачу publishToMavenLocal, которая будет выполнена только после успешного завершения releaseBuild (таким образом, очистка и сборка). Тогда есть проблема.

plugins {
    id 'java'
    id 'maven-publish'
}

group 'com.example'
version '1.0-SNAPSHOT'

task releaseBuild {
    outputs.upToDateWhen { false }
    // generatePomFileForMavenJavaPublication.mustRunAfter(clean)
    jar.mustRunAfter(clean)
    releaseBuild.dependsOn(clean, build)
}

publishToMavenLocal.dependsOn(releaseBuild)

publishing {
    publications {
        mavenJava(MavenPublication) {
            pom {
                from components.java
                packaging 'jar'
            }
        }
    }
}

gradle releaseBuild работает хорошо.gradle publishToMavenLocal показывает ошибку:

> Task :generatePomFileForMavenJavaPublication
> Task :clean
> Task :compileJava NO-SOURCE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar
> Task :publishMavenJavaPublicationToMavenLocal FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':publishMavenJavaPublicationToMavenLocal'.
> Failed to publish publication 'mavenJava' to repository 'mavenLocal'
   > java.io.FileNotFoundException: __path__\build\publications\mavenJava\pom-default.xml (System nie może odnaleźć określonej ścieżki -- File not found)

Чисто после генерации pom файла.

Когда я раскомментирую строку с generatePomFileForMavenJavaPublication.mustRunAfter(clean)У меня есть ошибка:

> Could not get unknown property 'generatePomFileForMavenJavaPublication' for task ':releaseBuild' of type org.gradle.api.DefaultTask.

1 ответ

  1. Добавьте в конце вашего сценария.
publishMavenJavaPublicationToMavenLocal.mustRunAfter(clean)
  1. Существует плагин дерева задач, который очень полезен в таких ситуациях.

  2. Удобно различать фазы конфигурирования и выполнения сборки Gradle при тонкой настройке конфигурации задач. Это поможет, если вы прочитаете о Build Lifecycle.

  3. Добавление зависимостей к clean Задача обычно дает больше головной боли, чем пользы. Попробуйте добавить только "мягкие" зависимости, такие как mustRunAfter и добавить clean Задача явно для вашей командной строки:

gradle clean releaseBuild publishToMavenLocal
Другие вопросы по тегам