私はgradleビルドスクリプトを持っています。私はこのスクリプトでQueryDSLメタデータを生成したいと思う。これらのメタデータは、build/generated-sources/metamodelフォルダの下に生成されます。GradleはQuerydslメタデータを別々の注釈プロセッサで2回生成します
現時点で直面している問題は、メタモデルが1回だけ生成されるのではなく、2回生成されることです。目的のターゲットと共に、デフォルトのbuld/classes/...の "duplicate class"エラーが生成されます。
sourceSets {
generated.java.srcDirs=['build/generated-sources/metamodel']
main {
java { srcDir 'src/main/java' }
}
test {
java { srcDir 'src/main/test' }
}
}
configurations { querydslapt }
dependencies {
compile 'org.hibernate:hibernate-entitymanager:5.2.3.Final',
'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final-redhat-1',
'com.querydsl:querydsl-jpa:4.1.3',
// ... others, non-hibernate/querydsl ...
querydslapt 'com.querydsl:querydsl-apt:4.1.3'
}
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.querydsl.apt.hibernate.HibernateAnnotationProcessor']
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}
compileJava {
dependsOn generateSources
source generateSources.destinationDir
}
Gradleのトレースによると、問題は、ミックスに2つのAnnotatioProcessorsがあることであるように思われます。まず、HibernateAnnotationProcessorです。次に、JPAAnnotationProcessorが作成され、最終的に複製クラスが生成されます。そして、私は理由を理解できません、ビルドスクリプトはok-ishに見えます。私は推測するかもしれませんが、私はどんな提案にも感謝しています。もしかしたら、私は自分のgradle-cacheも掃除しました。純粋なビルドスクリプト関連の問題ではないかもしれませんが、コンソールを介してスクリプトを実行してもその動作は維持されます。私にとって
Gist, basically exactly what I "should" need
(older) Post regarding this issue