4

パッケージ名のみを指定して QueryDsl Q-Classes を生成するにはどうすればよいですか? ソース クラスは、他のビルド プラグイン (WSDL、XSD など) の製品であるため、target/generated-sources フォルダーに存在します。

次のプラグインを使用してみましたが、適切な構成が見つかりません。

<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>

と:

<groupId>com.mysema.maven</groupId> 
<artifactId>maven-apt-plugin</artifactId> 
<version>1.0.4</version> 

私がやりたいことは次のようなものです:

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

...クラスを生成します:

  • com.my.package.QFoo.java
  • com.my.package.QBar.java

共通の JPA または JDO アノテーションがなく、ソース ファイルにアクセスできないcom.mysema.query.apt.*Processorため、maven-apt-plugin の<processor>.

編集 1:完全な maven-apt-plugin 構成を追加しました。

編集 2: - maven コマンド ラインを介して maven-apt-plugin を散発的に動作させることができましたが、拡張注釈付きクラスAbstractQuerydslProcessorを探すことで@XmlType二重コード生成は理想的なソリューションではないことは確かです。

4

1 に答える 1

6

答えは、 https ://github.com/mysema/querydsl/issues/196 で説明されているティモの戦略を使用して Q クラスを生成することです。

私のモジュールではpackage-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>
于 2012-12-20T19:22:35.577 に答える