maven apt-get-plugin for mysema

时间:2013-07-25 18:14:00

标签: java eclipse-plugin m2eclipse querydsl

我在我的pom.xml中添加了以下代码段,但是在eclipse中执行部分是错误的说法:

Plugin execution not covered by lifecycle configuration: com.mysema.maven:maven-apt-plugin:1.0.3:process (execution: default, phase: generate-sources)

虽然当我从命令行运行mvn clean install时它正常工作。

<build>
        <plugins>
            <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>maven-apt-plugin</artifactId>
                <version>1.0.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <phase>generate-sources</phase>
                        <configuration>
                            <outputDirectory>${project.basedir}/target/generated-sources/java</outputDirectory>
                            <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                            <processors>
                                <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                        </processors>
                        <showWarnings>true</showWarnings>
                    </configuration>
                </execution>
            </executions>
        </plugin>

从命令行运行后,它生成查询dsl类(QClasses),但是从eclipse中不生成它们。

此外,当我从eclipse运行我的应用程序时,它会出现以下错误:

Caused by: java.lang.ClassNotFoundException: xxx.QClass

eclipse maven插件有问题吗?我该如何解决这个问题?

5 个答案:

答案 0 :(得分:6)

如果您只需要从JPA实体类生成Q类,另一种可能的解决方案是使用querydsl-apt的分类器,如:

<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>${querydsl.version}</version>
    <classifier>jpa</classifier>
</dependency>

在这种情况下,您根本不需要手动apt-maven-plugin构建配置。

答案 1 :(得分:2)

这是一个相当旧版本的插件,可能就是为什么它没有被覆盖。请更新到此处显示的配置https://github.com/mysema/apt-maven-plugin

答案 2 :(得分:1)

这是一个你会在eclipse中经常看到的错误。基本上,Eclipse会尝试将插件与m2e连接器匹配。如果没有这样做,因为您没有安装合适的连接器,则会出现此错误。

解决它是非常明确的:将鼠标悬停在错误上。您将看到3种可能的快速修复方法,如下所示: Insert your plugin name

它们具有以下效果:

  • 发现新的m2e连接器:可能是最明智的连接器:寻找m2e连接器并安装它。这解决了eclipse安装的问题(对于这个特定的插件)
  • 在[...] Eclipse首选项中将目标FOOBAR标记为忽略:这会在本地Eclipse安装中设置首选项,以忽略Eclipse没有为此特定插件找到m2e连接器
  • 在pom.xml [...]中永久标记目标[...]:这将在项目的pom.xml中引入一个配置片段,以忽略eclipse找不到m2e连接器。

如果您正在使用的插件没有m2e连接器,您将需要忽略此问题,因为它非常特定于Eclipse。您的maven构建仍将运行(例如,通过命令行),当您配置Eclipse以忽略该插件时,Eclipse maven插件也将构建您的项目。 如果您想与团队共享配置,或者有不同的eclipse安装,请将配置添加到您的pom。如果您不希望让IDE特定设置污染pom(就像我一样),而是使用eclipse首选项。

以下是有关此问题的更多详细信息:https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html

答案 3 :(得分:0)

如果与m2e

一起使用,请使用以下内容
<plugin>
    <groupId>com.mysema.maven</groupId>
    <artifactId>apt-maven-plugin</artifactId>
    <version>1.1.1</version>
    <executions>
        <execution>
            <goals>
                <goal>process</goal>
            </goals>
            <configuration>
                <outputDirectory>target/generated-sources/java</outputDirectory>
                <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
            </configuration>
        </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>com.mysema.querydsl</groupId>
                <artifactId>querydsl-apt</artifactId>
                <version>3.6.7</version>
            </dependency>
            <dependency>
                <groupId>com.mysema.querydsl</groupId>
                <artifactId>querydsl-jpa</artifactId>
                <classifier>apt</classifier>
                <version>3.6.7</version>
            </dependency>
        </dependencies>
    </plugin>

答案 4 :(得分:0)

是的-不幸的是,这是Eclipse的问题-因为您将Eclipse指向JDK-很好,但是Eclipse本身也是一个Java应用程序,它也可以在JVM中运行。它在JRE中而不是JDK中运行。 解决该问题的方法是-在eclipse.ini(或STS.ini-如果使用的是Eclipse STS)中,请添加以下第一行:

-vm C:\Java\jdk1.8.0_60\bin\javaw.exe

如果您使用的是Windows,则为

。如果您使用的是Linux或Mac,则基本上必须在其中使用正确的路径。 希望能帮助到你。干杯, 欧根。 https://github.com/eugenp/tutorials/issues/247