5

我在我的 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插件有问题吗?我该如何解决这个问题?

4

4 回答 4

9

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

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

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

于 2016-11-17T09:56:52.830 回答
2

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

于 2013-07-27T19:20:35.010 回答
2

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

解决它非常简单:将鼠标悬停在错误上。您会看到 3 个可能的快速修复,如下所示: 插入您的插件名称

它们具有以下效果:

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

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

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

于 2015-03-24T13:56:48.297 回答
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>
于 2015-12-30T10:04:34.767 回答