Gradle - Генерация исходного кода и компиляция - PullRequest
0 голосов
/ 14 апреля 2020

Я мигрирую из Maven в Gradle, и у меня проблема с сгенерированными источниками. Вот build.gradle одного из подпроектов

plugins {
    id 'war'
    id 'net.ltgt.apt-idea' version '0.15'
}

dependencies {
    ...
    compileOnly 'com.querydsl:querydsl-apt:4.2.1:jpa'
    compileOnly 'org.hibernate:hibernate-jpamodelgen:1.3.0.Final'
}

def generatedSources = "${buildDir}/generated/source/apt/main"
def generatedOutputDir = file("$generatedSources")

task generateSources(type: JavaCompile, group: 'build') {
    doFirst {
        generatedOutputDir.exists() || generatedOutputDir.mkdirs()
        sourceSets.main.java.srcDirs = ["${generatedSources}", 'src/main/java']
    }
    options.compilerArgs += [
            '-processor', '-proc:none',
            'org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor,' +
                    'com.querydsl.apt.jpa.JPAAnnotationProcessor',
            '-AaddSuppressWarningsAnnotation=true',
            '-Aquerydsl.entityAccessors=true',
            '-s', "${generatedSources}"
    ]
}

compileJava.finalizedBy generateSources

Классы сгенерированы правильно, но сразу после генерации я получаю ошибку "не найден подходящий метод для ..."

В основном, компиляция завершается неудачно, потому что сгенерированные классы не учитываются на этапе компиляции.

С finalizedBy Я был почти уверен, что это сработает, но нет ..

Любые идеи по как еще можно заставить генерацию классов работать до фазы compileJava?

1 Ответ

0 голосов
/ 15 апреля 2020

Эта строка

compileJava.finalizedBy generateSources

Должна быть

compileJava.dependsOn generateSources

См. https://docs.gradle.org/current/userguide/more_about_tasks.html#sec: добавление_открытых_стадий

...