Java 为什么我在做我的Spring项目时会得到一个未暴露于weaver警告的消息?
当我做我的Spring项目时,我似乎收到了很多这样的警告。该项目使用编译时编织和各种Spring注释,如事务性、自动连接和可配置 我有三个问题:它们是什么(效果如何)?我应该关心他们吗?以及“我能做些什么来移除它们?” 让我知道你需要什么来帮助我解决这个问题。我可以发布POM文件的相关部分、javaspring配置文件的部分或其他内容。我真的不知道需要什么,所以让我知道 我在春季论坛上看到过,但那个地方是个鬼城。有几个人问过这个问题,但没有答案 我正在使用Spring和CTW的Java配置 它们是什么(效果如何) 它(Java 为什么我在做我的Spring项目时会得到一个未暴露于weaver警告的消息?,java,spring,aspectj,Java,Spring,Aspectj,当我做我的Spring项目时,我似乎收到了很多这样的警告。该项目使用编译时编织和各种Spring注释,如事务性、自动连接和可配置 我有三个问题:它们是什么(效果如何)?我应该关心他们吗?以及“我能做些什么来移除它们?” 让我知道你需要什么来帮助我解决这个问题。我可以发布POM文件的相关部分、javaspring配置文件的部分或其他内容。我真的不知道需要什么,所以让我知道 我在春季论坛上看到过,但那个地方是个鬼城。有几个人问过这个问题,但没有答案 我正在使用Spring和CTW的Java配置 它们
ajc
)是说它发现了一些它认为应该或已经“编织”起来的类,但那是不可能做到的/还没有做到的
我应该关心他们吗
对。这意味着AspectJ编译时编织无法正常进行;i、 e.某些类上的注释不会生效
我能做些什么来移除它们
ajc: this affected type is not exposed to the weaver: com.myapp.domain.UserEntity [Xlint:typeNotExposedToWeaver]
更改构建配置,以便weaver可以找到它需要编织的所有代码
我猜您的应用程序涉及多个Maven模块。如果是这样,那么这个答案有一些到相关Eclipse/AspectJ和Maven文档的链接:。似乎AspectJ Maven插件需要明确告知在哪里查找东西。我也遇到了类似的问题。仔细检查后,我发现警告只发生在
测试编译
阶段,此时aspectj不够聪明,无法自动查看主java源目录和测试源目录。我通过将这两个目标分成不同的执行来解决它,使用不同的配置。POM的相关部分如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
<!-- add explicit instructions for test compile or it can't weave main src classes -->
<execution>
<id>test-compile</id>
<configuration>
<goals>
<goal>test-compile</goal>
<sources>
<basedir>${project.basedir}</basedir>
<includes>
<include>src/main/java/**/*.java</include>
<include>src/test/java/**/*.java</include>
</includes>
</sources>
</goals>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
aspectj maven插件
1.10
1.8
org.springframework
春季方面
1.8
1.8
编译
编译
测试编译
测试编译
${project.basedir}
src/main/java/***.java
src/test/java/***.java
我开始意识到这与“让诗篇干净”构建有关。可能是编译时weaver无法访问二进制类型的东西,它访问jar而不是源代码?我似乎一直收到不同的警告。谢谢@Stephen C。据我所知,我没有多个模块。然而,spring有很多spring方面。我认为它们必须使用加载时间编织,因为它们是作为一个罐子来的。这可能是问题的一部分吗?可能是。但请注意,它抱怨的是您的一个类,而不是SpringAspectsJAR文件中的一个类。我不确定它为什么找不到它们。这是一个标准的mvn布局/src/main/java等等。我的项目中没有.aj文件。特别是,上面@StephenC的链接为我提供了所需的答案,即修改aspectj maven插件的配置。