java Maven apt-get-插件用于mysema

kognpnkq  于 2023-01-16  发布在  Java
关注(0)|答案(4)|浏览(179)

我已经在我的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清洁安装时,它工作正常。

<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类(QClass),但从eclipse运行时,它不会生成它们。
此外,当我从eclipse运行我的应用程序时,它会出现以下错误:

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

eclipse maven插件有什么问题吗?我该怎么解决这个问题?

uelo1irk

uelo1irk1#

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

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

如果使用Jakarta持久性(Spring 6+):

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

在这种情况下,您根本不需要手动配置apt-maven-plugin构建版本。
编辑:如果要迁移到JavaEE 9,分类器应该是jakarta

9ceoxa92

9ceoxa922#

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

eaf3rand

eaf3rand3#

这是一个你在eclipse中经常会看到的错误,基本上,Eclipse试图将一个插件匹配到一个m2e连接器上,如果它做不到,因为你没有安装一个合适的连接器,你就会得到这个错误。
解决这个问题相当简单:将鼠标悬停在错误上。您将看到3种可能的快速修复方法,如下所示:

它们具有以下效果:

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

如果您正在使用的插件没有m2e连接器,那么您可以忽略这个问题,因为它是Eclipse特有的。(例如通过命令行),当您配置Eclipse忽略插件时,Eclipse maven插件也会很好地构建您的项目。如果您想与您的团队共享配置,或者有不同的Eclipse安装,将配置添加到您的pom中。如果您不希望pom被IDE特定的设置所污染(像我一样),请使用eclipse首选项。
以下是有关此问题的一些详细信息:https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html

ljsrvy3e

ljsrvy3e4#

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

相关问题