【问题标题】:Maven apt-get-plugin for mysemaMaven apt-get-plugin for mysema
【发布时间】:2013-07-25 19:10:32
【问题描述】:

我在我的 pom.xml 中添加了以下 sn-p,但是在 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插件有问题吗?我该如何解决这个问题?

【问题讨论】:

    标签: java eclipse-plugin m2eclipse querydsl


    【解决方案1】:

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

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

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

    【讨论】:

    • 当我看到 apt 分类器时我很怀疑,但这在 SpringBoot 1.5.10 和 2.0.0 中就像一个魅力
    • 如果您将它与 Spring Data JPA 和 Hibernate 一起使用,请查看 github.com/infobip/infobip-spring-data-jpa-querydsl。请注意,尚不支持 Spring Boot 2(最新的 Spring Data JPA),但我希望它很快就会完成。
    • 哇,只需将插件替换为 jpa 分类器即可!
    【解决方案2】:

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

    【讨论】:

    • 问题仅出在版本上。但不是旧版本,事实上需要 0.12(一个相当旧的版本)来支持执行阶段。使用 0.12 版本解决了我的问题。
    【解决方案3】:

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

    解决它非常困难:将鼠标悬停在错误上。您会看到 3 种可能的快速修复,如下所示:

    它们具有以下效果:

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

    【讨论】:

      【解决方案4】:

      如果与 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-25
        • 1970-01-01
        • 1970-01-01
        • 2013-10-04
        • 1970-01-01
        • 2012-04-02
        • 2016-08-28
        • 2020-07-06
        相关资源
        最近更新 更多