вызов задач из разных файлов Gradle - PullRequest
0 голосов
/ 15 октября 2018

Мне нужно создать 2 артефакта из 1 проекта, используя Gradle.У меня есть 3 файла Gradle, родительский файл, build.gradle и proj1.gradle и proj2.gradle для каждого из артефактов.Я хочу вызывать конкретные задачи проекта из родительского файла сборки.Это мой файл settings.gradle, в котором я определяю проект и связываю файл gradle с каждым проектом:

rootProject.name = 'Parent'
include 'proj1' 
include 'proj2'

project(':proj1').buildFileName = 'buildProj1.gradle'
project(':proj2').buildFileName = 'buildProj2.gradle'

Это файл build.gradle для вызова определенных задач:

project(':Parent') {

    dependencies {
         project(':proj1')
         project(':proj2')
    }
}

task compileAll (dependsOn: [':proj1:compileProj1']){
    compileAll.finalizedBy ':proj2:compileProj2'
 }

Ошибка в том, что он находит задачу compileProj1.

Как вызвать задачу подпроекта из родительского файла сборки?

ОБНОВЛЕНИЕ

В соответствии с приведенным ниже предложением я постараюсь объяснить, что мне нужно сделать, как можно более кратко.
У меня есть устаревший проект ANT, который был частью огромного проекта Ant.Теперь он автономен и должен быть преобразован в проект Gradle.Этот 1 проект создает 2 файла ear, используя набор сценариев сборки.Один файл уха является подмножеством другого.В Ant-сборке для правильного создания этих ear-файлов выполнялись следующие шаги: 1. Выполнение задач BuildScript1: очистка всех, зависимости загрузки, компиляция и этап 2. Выполнение задач BuildScript2: чистая компиляция, компиляция иЭтап 3. Выполнить задачу BuildScript1: пакет 4. Задача запуска BuildScript2: пакет

У этих задач есть много, много зависимых задач и вызываемых макросов.Таким образом, планируется импортировать сценарий сборки для каждого файла ear в его собственный файл gradle и создать граф зависимостей в родительском файле gradle для указанных выше задач.

Это задачи gradle, определенные в файле First Ear:

task ear1Clean(dependsOn: ['clean-all', copyDependencies])

task ear1Compile(dependsOn: ['compile-and-stage'])
    ear1Compile.finalizedBy 'deploy'

Это задачи gradle, определенные для файла Second Ear:

task ear2Compile(dependsOn: ['clean-compile'])
    ear2Compile.finalizedBy 'compile-and-stage'     

//Package the Load ear
task ear2Package(dependsOn: ['deploy'])

В родительском файле gradle build.gradle я хочу сделать что-то вроде этого:

task compileAll (dependsOn: [':proj1:ear1Compile']){
    compileAll.finalizedBy ':proj2:ear2Compile'
 }

Надеюсь, это все прояснит ...

ОБНОВЛЕНИЕ

Это то, что у меня есть до сих пор ... Файл Settings.gradle:

include 'loadRemote', 'load'
rootProject.name = 'EquipLoad'

project(':loadRemote').buildFileName = 'buildRemote.gradle'
project(':load').buildFileName = 'buildLoad.gradle'

Родительский файл: build.gradle

allprojects {
    task cleanCompileStage {
        doLast { task ->
            println "Clean, compile, stage $task.project.name"
        }
    }
}

tasks.getByPath(":load:cleanCompileStage").dependsOn(":loadRemote:cleanCompileStage")

В каждом из файлов gradle load и loadRemote определены задачи cleanCompileStage.Когда я запускаю его с помощью: gradle -q cleanCompileStage Я не получаю сообщение об ошибке, и эта распечатка выводит:

Clean, compile, stage EquipLoad
Clean, compile, stage loadRemote
Clean, compile, stage load

Однако он вызывает задачи в файлах проекта gradle.Я поместил println операторов в конкретные задачи проекта, и они не называются.

remoteLoad.gradle и load.gradle обращаются к одному и тому же коду проекта.В файлах gradle они импортируют различные файлы сборки ant для различий между сборками.Файловая структура для файлов Gradle выглядит следующим образом:

|--build.gradle
|--remoteLoad.gradle
|--load.gradle

UPDATE Добавьте файлы load.gradle и remoteLoad.gradle в папки Load и RemoteLoad соответственно.Однако при запуске gradle файлы gradle не могут найти файл build.xml, который я импортирую.Могу ли я добавить директиву path к команде ant.importBuild 'build.xml'

Я пробовал: ant.importBuild '../build.xml', но она не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...