Gradle-生成源代码并进行编译

问题描述 投票:0回答:1

我正在从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阶段之前我还能如何使类生成运行的任何想法?

maven gradle code-generation processor
1个回答
0
投票

此行

compileJava.finalizedBy generateSources

应该是

compileJava.dependsOn generateSources

请参见https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:adding_dependencies_to_tasks

© www.soinside.com 2019 - 2024. All rights reserved.