我有一个Gradle任务,它使用Querydsl JPAAnnotationProcessor从注释生成JPA查询类型源文件。我使用的Gradle任务非常类似于joeG在帖子Generating JPA2 Metamodel from a Gradle build script中的响应中的任务。
我能够生成源文件,但我想排除某个包中的某些文件。 Querydsl文档列出了querydsl.excludedPackages选项。如何将此选项传递给Gradle中的JPAAnnotationProcessor?
在Maven中我可以使用apt-maven-plugin并在配置中传递类似:
<options>
<querydsl.excludedPackages>com.thomsonreuters.domainmodel.eventhistory</querydsl.excludedPackages>
</options>
但我无法弄清楚如何使用Gradle来做到这一点。
答案 0 :(得分:3)
我通过查看com.mysema.maven:apt-maven-plugin的源代码来找出答案,看看它是如何传递额外选项的。
它接受选项结构中的值,将字母A添加到键的开头,并以key = value的形式传递它们。因此,对于关键的querydsl.excludedPackages,我需要在options.compilerArgs列表中添加类似“-Aquerydsl.excludedPackages = com.package.to.ignore”的内容。
一旦我这样做,我就可以忽略我不想处理的包。
答案 1 :(得分:3)
使用最新的gradle会更容易
compileJava {
options.compilerArgs += [
'-Aquerydsl.excludedPackages=com.thomsonreuters.domainmodel.eventhistory'
]
}
dependencies {
...
compile "com.mysema.querydsl:querydsl-jpa:3.6.3"
compileOnly "com.mysema.querydsl:querydsl-apt:3.6.3:jpa"
}
答案 2 :(得分:2)
我目前使用此build.gradle
脚本生成QueryDSL类型:
project("my-project") {
sourceSets {
generated {
java {
srcDir 'src/main/generated'
}
}
}
configurations {
querydslapt
}
dependencies {
// your dependencies
querydslapt "com.mysema.querydsl:querydsl-apt:3.4.0"
}
task generateSources(type: JavaCompile, group: 'build', description: 'Generates the QueryDSL query types') {
source = sourceSets.main.java
classpath = configurations.compile + configurations.querydslapt
options.compilerArgs = ['-proc:only',
'-processor',
'com.mysema.query.apt.jpa.JPAAnnotationProcessor',
'-Aquerydsl.excludedPackages=com.thomsonreuters.domainmodel.eventhistory']
options.warnings = false
destinationDir = file('src/main/generated')
outputs.dir destinationDir
}
compileJava.source generateSources.outputs.files
clean {
delete sourceSets.generated.java.srcDirs
}
}