找不到spring-aspects-4依赖

 握住每一缕光 发布于 2023-02-09 06:07

我想将我的项目升级到spring 4,但是,我得到了aspectweaver-1.8.0.M1.jar的缺失依赖项.当我看一下依赖层次结构时,我发现spring-aspects-4.0.0需要这个文件,它在自己的pom.xml中有以下内容:


  org.aspectj
  aspectjweaver
  1.8.0.M1
  compile

检查maven存储库后,我无法找到此工件,因为最新的aspectweaver稳定版本是1.7.4.

现在我无法理解两件事:

    由于此依赖项的范围是编译,为什么我的应用程序需要它?我不想编译spring-aspects.jar !!

    为什么弹簧方面-4.0.0.jar(这稳定的)使用非稳定组件的版本?这不会使spring-aspects-4.0.0也不稳定吗?

谢谢

2 个回答
  • 要解决aspectjweaver依赖关系,请添加以下存储库:

    <repository>
        <id>spring-milestones</id>
        <url>http://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    

    这将使您可以访问aspectjrt,aspectjweaver和aspectjtools的1.8.0.M1版本.

    但是,aspectj-maven-plugin的1.6版本不支持Java 8.

    然而,spring-aspects-4.0.0依赖于aspectjweaver 1.8.0.M1来支持Java 8.

    如果您使用的是Spring 3.2.6和Java 7,则此aspectj-maven-plugin配置可以正常工作:

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.6</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <complianceLevel>1.7</complianceLevel>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-aspects</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                    <showWeaveInfo>true</showWeaveInfo>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    

    您可以在spring-aspects 4.0.0依赖项中的aspectjweaver 1.8.0.M1上插入一个排除项.这可能允许您将Spring 4与Java 7以及所有1.7.4 aspectj*依赖项一起使用.

    为了在Spring 4/Java 8项目中应用编译时编织(CTW),我遇到了以下帖子:

      Maven,Scala,Spring,AspectJ

      https://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist

    这是我的解决方案:https://github.com/javawerks/homeschool/blob/master/pom.xml

    有用!请注意,此解决方案使用3 aspectj*amigos的1.8.0.M1版本,可在此处找到:http://repo.spring.io/milestone/org/aspectj/

    警告:如果您的本地maven存储库还没有maven-antrun-plugin依赖项,则会出现"无法在maven central中找到*依赖项"错误.要解决此问题,请将依赖项复制到主依赖项元素; mvn clean编译; 删除复制的依赖项; 和maven-antrun-plugin应该找到aspectj*依赖项.然后执行'mvn clean install'并验证ajc日志记录.

    最后,在Intellij中,您将看到此iajc属性的"无法解析符号"错误:

    aspectPath="${org.springframework:spring-aspects:jar}"
    

    不用担心,它按预期工作.这是一个maven-antrun-plugin命名约定.

    有一天,aspectj-maven-plugin将被更新以支持Java 8,然后我们可以恢复正常.也就是说,showWeaveInfo ="true"日志记录要好得多.

    希望这可以帮助.就像我之前的那么多人一样,花了很多啤酒来计算这个.)

    2023-02-09 06:35 回答
  • 根据Springsource报道的一个问题,aspectjweaver"基本上与AspectJ 1.7相同",只是它早期支持Java 8.

    由于我不需要Java 8支持,我基本上将一个编译依赖项添加到了aspectweaver的最新发行版:

    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.7.4</version>
    </dependency>
    

    这确保使用1.7.4而不是里程碑版本,并且暂时是我可接受的解决方法.

    2023-02-09 06:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有