我有一个项目,它不是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执行下的执行标记上会出现以下错误
我认为这是一个典型的问题,完全没有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 是完整的项目。