我在我的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插件有问题吗?我该如何解决这个问题?
答案 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种可能的快速修复方法,如下所示:
它们具有以下效果:
如果您正在使用的插件没有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