Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Gradle将选项传递给JPAAnnotationProcessor_Jpa_Gradle_Querydsl - Fatal编程技术网

从Gradle将选项传递给JPAAnnotationProcessor

从Gradle将选项传递给JPAAnnotationProcessor,jpa,gradle,querydsl,Jpa,Gradle,Querydsl,我有一个Gradle任务,它使用Querydsl JPAAnnotationProcessor从注释生成JPA查询类型的源文件。我使用了一个Gradle任务,非常类似于joeG在帖子中的回复 我可以生成源文件,但我想排除某个包中的某些文件。Querydsl文档列出了Querydsl.excludedPackages选项。如何将此选项传递给Gradle中的JPAAnnotationProcessor 在Maven中,我可以使用apt Maven插件,并在配置过程中传递如下信息: <optio

我有一个Gradle任务,它使用Querydsl JPAAnnotationProcessor从注释生成JPA查询类型的源文件。我使用了一个Gradle任务,非常类似于joeG在帖子中的回复

我可以生成源文件,但我想排除某个包中的某些文件。Querydsl文档列出了Querydsl.excludedPackages选项。如何将此选项传递给Gradle中的JPAAnnotationProcessor

在Maven中,我可以使用apt Maven插件,并在配置过程中传递如下信息:

<options>
<querydsl.excludedPackages>com.thomsonreuters.domainmodel.eventhistory</querydsl.excludedPackages>
</options>

com.thomsonreuters.domainmodel.eventhistory

但是我不知道如何使用Gradle来实现这一点。

我目前使用这个
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
   }

}

我通过查看com.mysema.maven:aptmaven插件的源代码,了解它是如何传递额外选项的,从而得出了答案

它从选项结构中获取值,将字母A添加到键的开头,并以key=value的形式传递它们。因此,对于key querydsl.excludedPackages,我需要在options.compilerArgs列表中添加类似“-Aquerydsl.excludedPackages=com.package.to.ignore”的内容


一旦我这样做了,我就可以忽略我不想处理的包。

使用最新的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"
}

这与我正在使用的类似,但我不知道如何在options.compilerArgs中传递querydsl.excludedPackages参数。在Maven插件中,querydsl.execludedPackages位于映射结构中,如问题所示。@MattJames,查看,该选项似乎应作为
-aooptionName=optionValue
传递给注释处理器。我已经相应地更新了答案。我已经完成了您提到的配置,但我得到了警告:以下选项未被任何处理器识别:“[querydsl.excludedPackages]”请参考@MasterCode我不再使用gradle(返回maven),因此我帮不上忙。请对这个问题投赞成票: