当前位置: 首页 > 知识库问答 >
问题:

Maven AspectJ插件非spring项目无法工作

庄弘业
2023-03-14

我有一个项目,它不是spring应用程序。我正在尝试在其中使用AspectJ注释。注释类是从我的另一个jar中引用的。我在下面提到了POM的插件部分。我的构建成功了,但是Maven的控制台输出从来没有提到任何关于AspectJ插件的内容,而且当我运行我的项目时,注释也不起作用。

我几个小时来一直想弄清楚出了什么问题,但还是搞不清楚。

<pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.4</version>
                <configuration>
                    <complianceLevel>1.8</complianceLevel>
                    <showWeaveInfo>true</showWeaveInfo>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>it.cvc.ciscocommerce.lps.lp-commons</groupId>
                            <artifactId>lp-commons</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>listpriceservice</warName>
                </configuration>
            </plugin>
            <!-- Plugin for sdaas deployment. For compressing war to tar.gz -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/resources/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.5.201505241946</version>
                <executions>
                    <execution>
                        <id>default-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

    </pluginManagement>

这是Jar中定义的两个依赖项,我试图将它用作方面库。

<dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.7.4</version>
</dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjtools</artifactId>
        <version>1.7.4</version>
    </dependency>

[DEBUG]目标:org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(default-compile)[DEBUG]样式:Regular

[DEBUG]目标:org.apache.maven.plugins:maven-resources-plugin:2.6:testresources(default-testResources)[DEBUG]样式:Regular

[DEBUG]目标:org.apache.maven.plugins:maven-compiler-plugin:3.1:testcompile(default-testCompile)[DEBUG]样式:Regular

[DEBUG]目标:org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test(default-test)[DEBUG]样式:Regular

[DEBUG]目标:org.apache.maven.plugins:maven-war-plugin:2.4:war(default-war)[DEBUG]样式:Regular

编辑:在阅读了Kriegaex的回答和关于pluginManagement vs plugins之后,我改变了我的POM如下所示。请注意,我的项目不是多模块的,它只有一个POM。

<plugins>
        <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.4</version>
                <configuration>
                    <complianceLevel>1.8</complianceLevel>
                    <showWeaveInfo>true</showWeaveInfo>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>it.cvc.ciscocommerce.lps.lp-commons</groupId>
                            <artifactId>lp-commons</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <warName>listpriceservice</warName>
            </configuration>
        </plugin>
        <!-- Plugin for sdaas deployment. For compressing war to tar.gz -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/resources/assembly.xml</descriptor>
                </descriptors>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.5.201505241946</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

当我这样做时,在AspectJ执行下的执行标记上会出现以下错误

共有1个答案

夏新翰
2023-03-14

我认为这是一个典型的问题,完全没有AspectJ问题,只是使用Maven的初学者的错误:

您已经在 部分中定义了插件的默认设置,但后来忘记在单独的 部分中引用它们。因此,Maven根本不知道您想要使用它们。

更新:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>my.group.id</groupId>
            <artifactId>my-plugin-name</artifactId>
            <version>1.2.3</version>
            <configuration>
                <something>foo</something>
            </configuration>
        </plugin>
        <plugin>
            <groupId>my.group.id</groupId>
            <artifactId>my-other-plugin-name</artifactId>
            <version>4.5</version>
            <scope>test</scope>
            <configuration>
                <blah>xyz</blah>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

然后稍后在同一模块中或在将前一个模块作为父模块或将其导入为BoM(物料清单)的另一个模块中:

<plugins>
    <plugin>
        <groupId>my.group.id</groupId>
        <artifactId>my-plugin-name</artifactId>
    </plugin>
    <plugin>
        <groupId>my.group.id</groupId>
        <artifactId>my-other-plugin-name</artifactId>
    </plugin>
</plugins>

看见没?非常干净简单。

顺便说一下,这与 之间的区别类似。

 类似资料:
  • 问题内容: 我正在遵循创建Maven插件的教程,并且无法运行mvn install而不会出现错误。该信息抱怨说,当注释应为我生成它们时,我没有所需的mojo描述符。我正在运行Maven 3.0.5,并使用intellij作为我的想法。这是我的主班: 这是我的pom.xml 注意: 我必须单独添加注释依赖项,因为主插件api不包含这些类。当我在项目上运行mvn install时,输出如下: 问题答案

  • 我正在尝试将安全插件3.2.1用于grails 3.3.5。

  • 我正在开发spring boot应用程序版本1.3.5。我正在尝试使用spring boot maven插件(使用启动/停止目标)实现集成测试。我的申请。属性文件当前位于目标/测试文件夹中,但运行时,应用程序正在查找该应用程序。项目根路径中的属性文件。 有人知道如何在spring boot maven插件中设置工作目录吗? 我当前的插件配置是:

  • 将文件选取器^1.13.3添加到“我的依赖项”后,项目无法生成此错误 失败:构建失败,但有例外。 错误:任务执行失败:app:mergeDebugJavaResource 执行com.android.build.gradle.internal.tasks.时发生故障$ActionFacade文件'com.android.builder.files.ZipCentralDirectory@7dfb7

  • 我在尝试构建项目时遇到以下错误。唯一的区别是gradle脚本是在Kotlin DSL中。 下面是我的整个build.gradle.kts文件 https://gist.github.com/nksaroj/483f3f07df8e04c72040ea4c055459d6 或者 https://github.com/nksaroj/xDemo 是完整的项目。