AspectJ Maven Plugin cannot compile my project

前端 未结 5 1285
难免孤独
难免孤独 2021-02-18 18:19

I try to use aspectj maven plugin for compile project with aspectj compiler and then I try to package classes into \"war\" file. Unfortunately, it doesn\'t work with following c

相关标签:
5条回答
  • 2021-02-18 19:02

    It will be work after change plugin configuration to following:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.6</version>
        <configuration>
            <complianceLevel>1.7</complianceLevel>
            <source>1.7</source>
            <target>1.7</target>
            <encoding>UTF-8</encoding>
        </configuration>
        <executions>
            <execution>
                <phase>process-sources</phase>
                <goals>
                    <goal>compile</goal>
                </goals>
                <configuration>
                    <complianceLevel>1.7</complianceLevel>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    But after this I get a lot of different compilation errors:

    [ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.6:compile (default) on project tvbs-portlet: Compiler errors:
    [ERROR] error at Entitle.class, entitleId, LockModeType.PESSIMISTIC_WRITE);
    [ERROR]
    [ERROR] /Users/<...>/ejb/BillingEJB.java:43:0::0 PESSIMISTIC_WRITE cannot be resolved or is not a field
    [ERROR] error at .createQuery("select e from Entitle e " +
    [ERROR]
    [ERROR] /Users/<...>/ejb/EntitleEJB.java:62:0::0 The method createQuery(String) in the type EntityManager is not applicable for the arguments (String, Class<Entitle>)
    [ERROR] error at return entityManager.createQuery(
    [ERROR] ^^
    

    Can cause is incorrect aspectj plugin parameters?

    0 讨论(0)
  • 2021-02-18 19:09

    Having looked at your Maven project https://github.com/dmitrievanthony/test-aspectj I found out that

    • the problem is totally unrelated to AspectJ Maven Plugin,
    • the same compilation errors also occur in Maven Compiler Plugin and
    • that the root cause of your problem is simply bad dependency management.

    Here is a screenshot (full size here) from IntelliJ IDEA's "find class":

    Class LockModeType is found 3x in the project

    As you can see, class LockModeType is found in 3 (three!) dependencies, one of which contains a version of the class which does not contain the expected enum values. Your code compiles if you remove this dependency.

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>ejb3-persistence</artifactId>
            <version>1.0.2.GA</version>
        </dependency>
    

    Maybe you should clean up your dependencies. You can use the Maven Dependency Plugin with goals like dependency:analyze and dependency:tree for that purpose.

    0 讨论(0)
  • 2021-02-18 19:13

    It seems like a known issue http://jira.codehaus.org/browse/MASPECTJ-125

    You can fix it by adding the following to your pom file.

    <complianceLevel>1.6</complianceLevel>
    
    0 讨论(0)
  • 2021-02-18 19:23

    Update: While the things I said about AspectJ Maven configuration in this answer are all correct, the root cause of the concrete problem at hand - bad Maven dependency management - is described in my other answer. It would be better if that one was the accepted answer and not this one.


    • User codelion's hint makes sense, please change your <compilationLevel> tag (typo?) - to <complianceLevel>.
    • There is no need to downgrade to plugin version 1.6, you can keep 1.7.
    • There is also no need to specify the configuration again within the <execution> section, the one at plugin level is enough.
    • Please note that the default AspectJ version in plugin 1.7 is 1.8.2, so maybe your runtime dependency on 1.7.4 works, but if I were you I would upgrade that one too, optimally in sync with the plugin version. It is no hard requirement, but I think it makes sense.
    • Maybe you even want to upgrade to the current version AspectJ 1.8.4, in the plugin as well as the runtime. This can also be achieved by adding a dependency to the desired aspectjtools version to the plugin configuration:
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.source-target.version>1.8</java.source-target.version>
            <aspectj.version>1.8.4</aspectj.version>
        </properties>
    
        <build>
            <pluginManagement>
                 <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>aspectj-maven-plugin</artifactId>
                        <version>1.7</version>
                        <configuration>
                            <showWeaveInfo>true</showWeaveInfo>
                            <source>${java.source-target.version}</source>
                            <target>${java.source-target.version}</target>
                            <Xlint>ignore</Xlint>
                            <complianceLevel>${java.source-target.version}</complianceLevel>
                            <encoding>UTF-8</encoding>
                            <verbose>true</verbose>
                        </configuration>
                        <executions>
                            <execution>
                                <!-- IMPORTANT -->
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>compile</goal>
                                    <goal>test-compile</goal>
                                </goals>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.aspectj</groupId>
                                <artifactId>aspectjtools</artifactId>
                                <version>${aspectj.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </pluginManagement>
    
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>aspectj-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjrt</artifactId>
                    <version>${aspectj.version}</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <dependencies>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
            </dependency>
        </dependencies>
    
    0 讨论(0)
  • 2021-02-18 19:24

    make sure the modules has source code,like *.java etc. when i compile CAS on version 4.0.6 it happens this error, I found the cas-server-uber-webapp doesn't has any source code in src folder. just remove the module from parent pom.xml.

    0 讨论(0)
提交回复
热议问题