【问题标题】:Gradle - Generate source and compileGradle - 生成源代码并编译
【发布时间】:2020-07-27 16:18:06
【问题描述】:

我正在从 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】:

    这一行

    compileJava.finalizedBy generateSources
    

    应该是

    compileJava.dependsOn generateSources
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      相关资源
      最近更新 更多