目录

  • 一、报错情形
  •    1、项目构架
  •    2、报错信息
  •    3、分析错误
  • 二、错误解决
  •    1、原因一解决方案
  •    2、原因二解决方案
  •    3、解决如图
  • 三、注意事项


一、报错情形

     存在三个功能模块(各自独立的),有功能模块 test 、test1、test2

     test中存在test-interface子模块,test1中存在test1-interface子模块,test2中存在test2-server子模块

     test1-interface 依赖于 test-interface子模块,而 test2-server 依赖于 test1-interface子模块、同时依赖于 test-interface子模块

   架构图如下:

若依 logback maven 依赖 maven依赖包报错_依赖包

     test1报错:

Failed to execute goal on project test1-interface: Could not resolve dependencies for project com.xxx:
test-interface:jar:1.0.0: Failed to collect dependencies at com.xxx:test-interface:jar:1.0.0: Failed to read 
artifact descriptor for com.xxx:test-interface:jar:1.0.0: Could not find artifact com.xxx:test:pom:1.0.0 in AAA
(http://xxx.xxx.xxx.xxx:8081/xxx/xxx) -> [Help 1]

  翻译如下:
      无法在项目产品上执行目标 - 通用:无法解析项目com.xxx的依赖项:test1-interface:1.0.0:无法在com.xxx收集依赖项:
test-interface:jar:1.0.0:无法读取com.xxx的工件描述符:test-interface:jar:1.0.0:在AAA中找不到工件com.xxx:test:pom:
1.0.0(http://xxx.xxx.xxx.xxx:8081/xxx/xxx)

  大致理解:
      在 test1 中存在不可解析的类或方法,因为所 test-interface 包不存在,其原因是因为在指定路径
(http://xxx.xxx.xxx.xxx:8081/xxx/xxx)中不存在这个依赖包

     test2报错:

Failed to execute goal on project test2-server: Could not resolve dependencies for project com.xxx:
test1-interface:jar:1.0.0: Failed to collect dependencies at com.xxx:test1-interface:jar:1.0.0: Failed to read 
artifact descriptor for com.xxx:test1-interface:jar:1.0.0: Could not find artifact com.xxx:test1:pom:1.0.0 in AAA
(http://xxx.xxx.xxx.xxx:8081/xxx/xxx) -> [Help 1]

  翻译如下:
      无法在项目产品上执行目标 - 通用:无法解析项目com.xxx的依赖项:test2-server:1.0.0:无法在com.xxx收集依赖项:
test1-interface:jar:1.0.0:无法读取com.xxx的工件描述符:test1-interface:jar:1.0.0:在AAA中找不到工件com.xxx:test1:pom:
1.0.0(http://xxx.xxx.xxx.xxx:8081/xxx/xxx)

  大致理解:
      在 test2 中存在不可解析的类或方法,因为所 test1-interface 包不存在,其原因是因为在指定路径
(http://xxx.xxx.xxx.xxx:8081/xxx/xxx)中不存在这个依赖包;而根据上面的架构图可知,其最根本原因是不存在 test-interface 包

     由上面可知,存在两种可能

       一是maven本地仓库没有这个依赖包,并且配置文件中的远程仓库路径错误(不存在这个依赖包)

       二是maven本地仓库没有这个依赖包,并且本地没有打包生成依赖包(针对3个功能模块都在本地)

若依 logback maven 依赖 maven依赖包报错_依赖包_02

二、错误解决

     该原因主要是在本地没有 test 功能模块时,才可能存在
     若是本地有 test 功能模块,可直接在本地打包生成依赖包(具体见原因二解决方案)

     从根本入手:
       先生成 test-interface 子模块的包,在处理 test功能模块(解决 test1 报错)



若依 logback maven 依赖 maven依赖包报错_依赖包_03

       再生成 test1-interface 子模块的包,再处理 test1 功能模块(解决 test2 报错)

若依 logback maven 依赖 maven依赖包报错_maven_04


若依 logback maven 依赖 maven依赖包报错_jar_05

三、注意事项

父工程的 pom 文件中加入maven的编译依赖组件; 需指定与idea所用java通个版本的jdk编译
在与其他工程(包括子工程与子工程之间)存在依赖关系时, 必要的组件
并且在打包编译时, 需要 先clean install一下父工程 ; 再走各个子工程的打包编译

<build>
        <pluginManagement>
            <plugins>
                <!-- 加入maven的打包依赖组件; SpringBoot的组件 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <!-- 加入maven的编译依赖组件; 需指定与idea所用java通个版本的jdk编译 -->
                <!-- 在与其他工程(包括子工程与子工程之间)存在依赖关系时, 必要的组件 -->
                <!-- 并且在打包编译时, 需要先clean install一下父工程; 再走各个子工程的打包编译 -->
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.3</version>
                    <configuration>
                        <!-- 一般而言,target与source是保持一致的,
                        但是,有时候为了让程序能在其他版本的jdk中运行
                        (对于低版本目标jdk,源代码中没有使用低版本jdk中不支持的语法),
                        会存在target不同于source的情况 -->
                        <!-- 源代码使用的开发版本 -->
                        <source>1.8</source>
                        <!-- 需要生成的目标class文件的编译版本 -->
                        <target>1.8</target>
                        <encoding>utf-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>