Gradle - могу ли я включить вывод задачи в зависимости проекта
У меня есть задача, которая генерирует Java-источники и набор JAR-файлов из этих источников (скажем, проектa
). Я хотел бы экспортировать эти банки в зависимые проекты (скажем, проектb
). Так вот'примерно то, что у меня есть сейчас:
//a.gradle
configurations{
generatedJars
}
task generateJars(type: JavaExec) {
//generate jars ...
outputs.files += //append generated jars here
}
dependencies{
generatedJars generateJars.outputs.files
}
//b.gradle
dependencies{
project(path: ':a', configuration: 'generatedJars')
}
Работает нормально, кроме добавленияgenerateJars.outputs.files
как зависимость не говорит Gradle, что он должен работатьgenerateJars
задача, когда еще нет сгенерированных банок. Я попытался добавить задачу в качестве зависимости, надеясь, что она будет работать так же, как и при добавлении задачи jar / zip в конфигурацию артефакта (например,artifacts{ myJarTask }
), но выдает ошибку, сообщающую, что я не могу этого сделать. Конечно, я могу ввестиgenerateJars
задача где-то в процессе сборки перед:b
начинает оценивать, но этонеуклюжий и хрупкий, поэтому я хотел бы избежать этого.
Я чувствую, что должен добавить сгенерированные банки вartifacts{ ... }
проекта, но я не уверен, как сделать их видимыми для зависимых проектов. Есть ли лучший способ добиться этого?
Зависимые проекты (проектb
) потребуется выполнить настройку classpath модуля IntelliJ IDEA, чтобы указать на проект 'a
сгенерированные банки. Что-то вроде этого (псевдокод):
//b.gradle
idea{
module{
scopes.COMPILE.plus += project(path: ':a', configuration: 'generatedJars').files
}
}
До сих пор я пытался просто добавить зависимость проекта от:a
generatedJars
в:b
Плагин Idea просто добавляет модуль:a
как модуль-зависимость и предполагает, что он экспортирует свои сгенерированные jar (что, вероятно, является правильным предположением), поэтому не добавляет сгенерированные jar в ':b
путь к классу
Любая помощь будет принята с благодарностью!