Java 找不到spring-aspects-4依赖项

Java 找不到spring-aspects-4依赖项,java,spring,maven,spring-aop,Java,Spring,Maven,Spring Aop,我想将我的项目升级到Spring4,但是,我缺少对aspectweaver-1.8.0.M1.jar的依赖。当我查看依赖层次结构时,我看到spring-aspects-4.0.0需要这个文件,它在自己的pom.xml中有以下内容 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1

我想将我的项目升级到Spring4,但是,我缺少对aspectweaver-1.8.0.M1.jar的依赖。当我查看依赖层次结构时,我看到spring-aspects-4.0.0需要这个文件,它在自己的pom.xml中有以下内容

<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.8.0.M1</version>
  <scope>compile</scope>
</dependency>

org.aspectj
aspectjweaver
1.8.0.M1
编译
在检查maven repository之后,我无法找到这个工件,因为aspectweaver的最新稳定版本是1.7.4

现在我不明白两件事:

  • 既然这个依赖项的范围是compile,为什么我的应用程序需要它?我不想编译spring-aspects.jar

  • 为什么spring-aspects-4.0.0.jar(它是稳定的)使用组件的非稳定版本?这难道不会使spring-aspects-4.0.0也变得不稳定吗

  • 根据,aspectjweaver“基本上与AspectJ 1.7相同”,只是它早期支持Java 8

    由于我不需要Java 8支持,我基本上在aspectweaver的最新版本中添加了编译依赖项:

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

    这确保了使用1.7.4而不是里程碑版本,并且目前对我来说是一个可接受的解决方案。

    要解决aspectjweaver依赖关系,请添加此存储库:

    <repository>
        <id>spring-milestones</id>
        <url>http://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    
    不用担心,它工作正常。这是一个maven antrun插件命名约定

    总有一天,aspectj maven插件将被更新以支持Java8,然后我们可以恢复正常。也就是说,showWeaveInfo=“true”日志记录要好得多


    希望这有帮助。和我之前的许多人一样,我花了很多啤酒才弄明白这一点

    您可能需要添加适当的里程碑存储库;我不知道是哪一个。关于
    springaspects
    依赖关系的好问题,我会针对它提交一个bug。我再次检查了springaspects的依赖关系,但找不到任何里程碑存储库!它从哪里下载aspectjweaver 1.8.0.M1?它似乎在依赖项管理中使用gradle。在文件中,我可以看到
    ext.aspectjVersion=“1.8.0.M1”
    。您是否也可以回答我的问题1:“既然此依赖项的范围是compile,为什么我的应用程序需要它?”?此外,在springsource的jira中提到,“如果这还需要一段时间,我们可能必须正式记录如何用AspectJ 1.7替换任何相关人员的依赖关系”。您能否在回答中也包括这一点(将aspectjweaver的1.8.0.M1的依赖项替换为1.7.4)?范围为“compile”的依赖项并不意味着您将实际编译它。这只意味着编译项目需要工件。如果您使用“mvn包”,它也会包含在war文件中。顺便说一下,编译范围是默认范围。+1这是一个非常详细的解释。如果您有时间,请添加一个示例来支持您所做的以下陈述。“您可能能够在spring aspects 4.0.0依赖项中插入aspectjweaver 1.8.0.M1的排除项。这可能允许您将spring 4与Java 7以及所有1.7.4 aspectj*依赖项一起使用。”FWIW,我已经更新了pom.xml,以反映spring和aspectj的最新版本。aspectj maven插件尚未针对Java 8进行更新。pom.xml包含与原始帖子相关的详细注释,希望能让事情更清楚一些。
            <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>
    
    aspectPath="${org.springframework:spring-aspects:jar}"