Maven 错误:类型的方法getId()未定义

Maven 错误:类型的方法getId()未定义,maven,maven-2,aspectj,spring-roo,Maven,Maven 2,Aspectj,Spring Roo,我有一个使用AspectJ和SpringRoo的应用程序。我对这些技术没有经验。在Maven的建筑中(3.3.9 )我在控制台中遇到一个错误: im@im:~/projects/maintenance$ mvn clean install [INFO] Scanning for projects... [INFO] [INFO] -----------

我有一个使用AspectJ和SpringRoo的应用程序。我对这些技术没有经验。在Maven的建筑中(3.3.9 )我在控制台中遇到一个错误:

im@im:~/projects/maintenance$ mvn clean install
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building maintenance 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maintenance ---
[INFO] 
[INFO] --- aspectj-maven-plugin:1.2:compile (default) @ maintenance ---
[ERROR] The method getId() is undefined for the type Employee
错误是公平的,因为我在
Employee
类中确实没有
getId()
方法,但我有以下注释:

import ...

@RooJavaBean
@RooToString
@RooJpaActiveRecord(persistenceUnit = "entityManagerFactoryMaintenance", identifierField = "id", identifierColumn = "EMPLOYEE_ID", versionColumn = "", versionField = "", finders = { "findEmployeesByHireDateIsNull" }, mergeMethod = "", persistMethod = "", removeMethod = "")
@JsonSerialize(include = Inclusion.NON_NULL)
@Table(name = "EMPLOYEES"/*, schema = Constants.ORACLE_MAINTENANCE_SCHEMA*/)
public class Employee {..}
我想问题出在AspectJ的某个地方。下面是我的
pom.xml
部分,其中包含AspectJ:

<properties>
    <aspectj.version>1.8.1</aspectj.version>
    <java.version>8</java.version>
    <roo.version>1.3.1.RC1</roo.version>
    <hibernate.version>4.0.1.Final</hibernate.version>
    <spring.version>4.0.9.RELEASE</spring.version>
    ...
</properties>
...
<dependencies>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${aspectj.version}</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>${aspectj.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>${spring.version}</version>
    </dependency>
    ...
</dependencies>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.2</version>
            <!-- NB: do not use 1.3 or 1.3.x due to MASPECTJ-90 and do not use 1.4 
                due to declare parents issue -->
            <dependencies>
                <!-- NB: You must use Maven 2.0.9 or above or these are ignored (see 
                    MNG-2972) -->
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjrt</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjtools</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <outxml>true</outxml>
                <aspectLibraries>
                    <aspectLibrary>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aspects</artifactId>
                    </aspectLibrary>
                </aspectLibraries>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.7</version>
            <!-- Note 2.8 does not work with AspectJ aspect path -->
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>false</downloadJavadocs>
                <wtpversion>2.0</wtpversion>
                <additionalBuildcommands>
                    <buildCommand>
                        <name>org.eclipse.ajdt.core.ajbuilder</name>
                        <arguments>
                            <aspectPath>org.springframework.aspects</aspectPath>
                        </arguments>
                    </buildCommand>
                    <buildCommand>
                        <name>org.springframework.ide.eclipse.core.springbuilder</name>
                    </buildCommand>
                </additionalBuildcommands>
                <additionalProjectnatures>
                    <projectnature>org.eclipse.ajdt.ui.ajnature</projectnature>
                    <projectnature>com.springsource.sts.roo.core.nature</projectnature>
                    <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                </additionalProjectnatures>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>

1.8.1
8.
1.3.1.RC1
4.0.1.最终版本
4.0.9.1发布
...
...
org.aspectj
aspectjrt
${aspectj.version}
org.aspectj
aspectjweaver
${aspectj.version}
org.springframework
春季方面
${spring.version}
...
...
org.codehaus.mojo
aspectj maven插件
1.2
org.aspectj
aspectjrt
${aspectj.version}
org.aspectj
aspectjtools
${aspectj.version}
编译
测试编译
真的
org.springframework
春季方面
${java.version}
${java.version}
org.apache.maven.plugins
maven eclipse插件
2.7
真的
假的
2
org.eclipse.ajdt.core.ajbuilder
org.springframework.aspects
org.springframework.ide.eclipse.core.springbuilder
org.eclipse.ajdt.ui.ajnature
com.springsource.sts.roo.core.nature
org.springframework.ide.eclipse.core.springnature
...
我也不确定IDE。我在Ubuntu上使用IntelliJ IDEA 2019.1.2(终极版)。这对使用Eclipse如此重要吗


在应用程序中我能做些什么?

为什么不试试当前的AspectJ Maven插件版本1.11?谁让你使用2009年发布的版本?如果不使用Maven,为什么要使用Maven Eclipse插件?你的POM看起来很奇怪。我建议不要从一个看起来太旧的源代码复制粘贴的东西开始。在编写POM时,当前的Java版本是6(现在是12),SpringRoo并不存在——谁还在使用Maven 2?这是遗留代码。要将其更新到当前版本,首先我需要构建并启动它。当然,这是遗留代码。我也是这么说的。但SpringRoo不是遗产,至少没有那么古老。因此,显然您有办法在构建和运行时管理中升级组件。只需将该选项应用于AspectJ Maven、Maven本身以及可能的其他插件。我不知道这是否有帮助,但您需要开始清理某个地方,消除可能的错误源。正如你所说,你想建立并启动它。因此,升级您的构建系统!然后构建它,使用Java8,AspectJ1.8.1——不是新的,但不是超旧的。为什么要使用过时的插件,而这些插件可能不知道更新的Java或AspectJ版本的选项?此外,当前的AspectJ版本是1.9.4,最后的1.8版本是1.8.14。自1.8.1以来,您丢失了很多错误修复。附言:如果你帮我把问题复制到HitHub(私人回购没问题),我可以看看。你为什么不试试当前的AspectJ Maven插件版本1.11?谁让你使用2009年发布的版本?如果不使用Maven,为什么要使用Maven Eclipse插件?你的POM看起来很奇怪。我建议不要从一个看起来太旧的源代码复制粘贴的东西开始。在编写POM时,当前的Java版本是6(现在是12),SpringRoo并不存在——谁还在使用Maven 2?这是遗留代码。要将其更新到当前版本,首先我需要构建并启动它。当然,这是遗留代码。我也是这么说的。但SpringRoo不是遗产,至少没有那么古老。因此,显然您有办法在构建和运行时管理中升级组件。只需将该选项应用于AspectJ Maven、Maven本身以及可能的其他插件。我不知道这是否有帮助,但您需要开始清理某个地方,消除可能的错误源。正如你所说,你想建立并启动它。因此,升级您的构建系统!然后构建它,使用Java8,AspectJ1.8.1——不是新的,但不是超旧的。为什么要使用过时的插件,而这些插件可能不知道更新的Java或AspectJ版本的选项?此外,当前的AspectJ版本是1.9.4,最后的1.8版本是1.8.14。自1.8.1以来,您丢失了很多错误修复。附言:如果你为我向HitHub提出复制问题(私人回购可以),我可以看一看。