带有 gradle 和 querydsl 的 IntelliJ

IntelliJ with gradle and querydsl

我正在为我的 gradle 项目使用 IntelliJ 14.1.1(但此问题存在于以前的版本中)。我的 gradle 文件有以下内容:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'jacoco'
apply plugin: 'maven'

project.ext {
    springBootVersion = '1.1.7.RELEASE'
}

configurations {
    querydslapt
}

jacoco {
    toolVersion = "0.7.0.201403182114"
}

buildscript {
    repositories {
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
        maven { url "http://repo.spring.io/libs-milestone" }
        maven { url "http://repo.spring.io/libs-snapshot" }
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.3.RELEASE")
    }
}

jar {
   ...
}

repositories {
    mavenCentral()
    maven { url "http://repo.spring.io/libs-milestone" }
    ...
}

jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

//Querydsl
def generatedSrcDir = 'src/main/generated'
task createGeneratedSrcDir << {
    file(generatedSrcDir).mkdirs()
}
compileJava.dependsOn createGeneratedSrcDir
compileJava {
    options.compilerArgs << '-processor' << 'com.mysema.query.apt.jpa.JPAAnnotationProcessor' << '-s' << file(generatedSrcDir).absolutePath
}
clean {
    delete generatedSrcDir
}  

每次我进行 gradle 构建时,似乎 IntelliJ 都会丢失生成源的设置,我必须进入项目 |模块设置,并手动将 src/main/generated/ 添加到源中。

这通常有效,但我不明白为什么我必须不断告诉 IntelliJ 我的源路径是什么。是 IntelliJ 的问题,还是我的 gradle 文件的问题?

您可以使用以下代码:

apply plugin: 'idea'
idea {
module {
    sourceDirs += file('src/main/generated')
    generatedSourceDirs += file('src/main/generated')
 }
}