Я пишу плагин Gradle, который содержит коллекцию нескольких блоков независимой конфигурации, которые будут применяться к любому проекту, использующему плагин.
Я хочу, чтобы фрагменты были очень отделены друг от друга, чтобы другие люди не добавляли несвязанную логику в существующее место, а также чтобы было лучше видно, что на самом деле настраивает плагин.
Итак, я думал, что смогу сделать это:
class CommonChecksPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.apply plugin: 'base'
def resolveFile = { filename ->
new URL(buildscript.sourceURI.toURL(), filename)
}
project.apply from: resolveFile('configuration1.gradle')
project.apply from: resolveFile('configuration2.gradle')
}
}
Пример configurationN.gradle
:
task 'checkSomething', type: CheckSomething
Проблема в том, что этот класс Java CheckSomething
не может быть решен.
Есть ли разумный способ сделать это, кроме как просто сдаться и переместить все подпрограммы в полные классы Groovy? Я не хочу переносить их в классы, потому что я хочу применить те же проверки к самому проекту плагина, и кажется, что их сложно применить, если они требуют компиляции.