dSe*_*ien 20 apt gradle querydsl
我正在尝试为新项目设置Gradle构建脚本.该项目将使用JPA 2和Querydsl.
在Querydsl参考文档的下一页中,他们解释了如何为Maven和Ant设置JPAAnnotationProcessor(apt).
我想和Gradle做同样的事情,但我不知道我的心爱的朋友怎么也没有帮我这个.我需要找到一种方法来调用Javac(最好没有任何额外的依赖关系)和参数,以便能够指定apt应该使用的处理器(?)
Joe*_*oeG 15
虽然我对使用Gradle使用Ant没有任何问题,但我同意原始的海报,在这种情况下它是不受欢迎的.我在这里找到了汤姆安德森的一个github项目,描述了我认为更好的方法.我修改了一小部分以满足我的需要(输出到src/main/generated),看起来像:
sourceSets {
generated
}
sourceSets.generated.java.srcDirs = ['src/main/generated']
configurations {
querydslapt
}
dependencies {
compile 'mine go here'
querydslapt 'com.mysema.querydsl:querydsl-apt:2.7.1'
}
task generateQueryDSL(type: Compile, 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"
]
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}
compileJava.dependsOn generateQueryDSL
Run Code Online (Sandbox Code Playgroud)
这种方法对我来说比其他方法更有意义,如果对你也有,那么你有另一种选择来进行查询生成.
Fre*_*mon 12
我没有测试它,但这应该工作:
repositories {
mavenCentral()
}
apply plugin: 'java'
dependencies {
compile(group: 'com.mysema.querydsl', name: 'querydsl-apt', version: '1.8.4')
compile(group: 'com.mysema.querydsl', name: 'querydsl-jpa', version: '1.8.4')
compile(group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.6.1')
}
compileJava {
doFirst {
Map otherArgs = [
includeAntRuntime: false,
destdir: destinationDir,
classpath: configurations.compile.asPath,
sourcepath: '',
target: targetCompatibility,
source: sourceCompatibility
]
options.compilerArgs = [
'-processor', 'com.mysema.query.apt.jpa.JPAAnnotationProcessor',
'-s', "${destinationDir.absolutePath}".toString()
]
Map antOptions = otherArgs + options.optionMap()
ant.javac(antOptions) {
source.addToAntBuilder(ant, 'src', FileCollection.AntType.MatchingTask)
options.compilerArgs.each {value ->
compilerarg(value: value)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
这个家伙的主旨为我工作:https://gist.github.com/EdwardBeckett/5377401
sourceSets {
generated {
java {
srcDirs = ['src/main/generated']
}
}
}
configurations {
querydslapt
}
dependencies {
compile 'org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final'
compile "com.mysema.querydsl:querydsl-jpa:$querydslVersion"
querydslapt "com.mysema.querydsl:querydsl-apt:$querydslVersion"
}
task generateQueryDSL(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"
]
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}
compileJava {
dependsOn generateQueryDSL
source generateQueryDSL.destinationDir
}
compileGeneratedJava {
dependsOn generateQueryDSL
options.warnings = false
classpath += sourceSets.main.runtimeClasspath
}
clean {
delete sourceSets.generated.java.srcDirs
}
idea {
module {
sourceDirs += file('src/main/generated')
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13184 次 |
| 最近记录: |