Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Java 从包生成QueryDsl Q类_Java_Maven_Querydsl - Fatal编程技术网

Java 从包生成QueryDsl Q类

Java 从包生成QueryDsl Q类,java,maven,querydsl,Java,Maven,Querydsl,如何仅通过指定包名生成QueryDsl Q类? 给定源类驻留在我的目标/生成的源文件夹中,因为它们是其他构建插件(wsdl、xsd等)的产品 我已尝试使用以下插件,但找不到正确的配置: <groupId>com.mysema.querydsl</groupId> <artifactId>querydsl-maven-plugin</artifactId> <version>2.9.0</version> <execut

如何仅通过指定包名生成QueryDsl Q类? 给定源类驻留在我的目标/生成的源文件夹中,因为它们是其他构建插件(wsdl、xsd等)的产品

我已尝试使用以下插件,但找不到正确的配置:

<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-maven-plugin</artifactId>
<version>2.9.0</version>
<executions>
    <phase>generate-sources</phase>
    <goals>
        <goal>process</goal>
    </goals>
    <configuration>
        <outputDirectory>target/generated-sources</outputDirectory>
        <processor>${com.mysema.query.apt.ProcessorClass}</processor>
    </configuration>
</executions>
com.mysema.querydsl
querydsl maven插件
2.9.0
生成源
过程
目标/生成源
${com.mysema.query.apt.ProcessorClass}
以及:

com.mysema.maven
maven apt插件
1.0.4 
我想做的是这样的:

<configuration>
    <packageName>com.my.package</packageName>
    <sourceFolder>target/generated-sources</sourceFolder>
    <targetFolder>target/generated-sources/querydsl</targetFolder>
</configuration>

com.my.package
目标/生成源
目标/生成源/querydsl
…这将生成类:

  • com.my.package.QFoo.java
  • com.my.package.QBar.java
由于没有通用的JPA或JDO注释,并且我没有访问源文件的权限,因此我无法将任何
com.mysema.query.apt.*处理器
用于maven apt插件的

编辑1:添加了完整的maven apt插件配置

编辑2:
-通过扩展
AbstractQuerydslProcessor
以查找
@XmlType
-注释类,我能够通过maven命令行让maven apt插件偶尔工作,但不是Eclipse/STS。诚然,双代码生成不是一个理想的解决方案。

答案是使用Timo在这里概述的策略生成Q类:

在我的模块的
包info.java
中:

@QueryEntities({ com.remote.module.Foo.class,
    com.remote.module.Bar.class })
package com.my.local.module.querydsl;

import com.mysema.query.annotations.QueryEntities;
Maven POM中的插件执行:

<plugin>
    <groupId>com.mysema.maven</groupId>
    <artifactId>apt-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>apt-maven-plugin-remote-module-QuerydslAnnotationProcessor</id>
            <goals>
                <goal>process</goal>
            </goals>
            <configuration>
                <outputDirectory>target/generated-sources</outputDirectory>
                <showWarnings>true</showWarnings>
                <!-- genereate Q-classes specified in package-info.java -->
                <processor>com.mysema.query.apt.QuerydslAnnotationProcessor</processor>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
        </dependency>
    </dependencies>
</plugin>

com.mysema.maven
aptmaven插件
apt maven插件远程模块QuerydslAnnotationProcessor
过程
目标/生成源
真的
com.mysema.query.apt.querySlanNotationProcessor
com.mysema.querydsl
querydsl公寓

能否发布maven apt插件的完整配置?还使用最新版本@ TimeStEk SUMPE-更新每编辑1。编辑3:也查看每一个,但进入一个。目标/生成的源不是一个目标目录的最佳选择,考虑使用子目录。还要修复插件的版本,以获得更确定的结果。@Timo:插件版本由父POM的插件依赖项管理。奇怪为什么目标/生成的源不是最佳的。应该使用目标/生成的源的子文件夹,使用此模式可以避免目标文件夹位于源文件夹内的情况
<plugin>
    <groupId>com.mysema.maven</groupId>
    <artifactId>apt-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>apt-maven-plugin-remote-module-QuerydslAnnotationProcessor</id>
            <goals>
                <goal>process</goal>
            </goals>
            <configuration>
                <outputDirectory>target/generated-sources</outputDirectory>
                <showWarnings>true</showWarnings>
                <!-- genereate Q-classes specified in package-info.java -->
                <processor>com.mysema.query.apt.QuerydslAnnotationProcessor</processor>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
        </dependency>
    </dependencies>
</plugin>