Could not find artifact XXXXXXXXX:pom:2.6 in public (http://maven.aliyun.com/nexus/content/groups/public/)

日志模块依赖于公共模块,公共模块不依赖于其它子模块。打包公共模块正常,但在打包日志模块的时候报错。此处是因为找不到父工程。

解决办法有两个:

1.父类直接打包

         直接点击父类的install,《EL-ADMIN后台管理》为父模块。

   

         注意:父工程module中的子模块顺序为打包顺序,将需要依赖的模块放在前面,后面的模块就可以引用前面的模块。

2.打包子模块,子模块使用父模块依赖,直接打包某一个子模块,maven会向上查找父模块,此时父模块不存在,报错,可以把父工程中的所有子模块注释掉,然后打包父模块,此时maven仓库中就会有父模块了,然后再打包子模块,成功。

注意:直接打包子模块存在问题,每一个子模块中都会引入父模块中的全部依赖。比如说打包common模块,打包的目标jar文件中包含父工程中的所有依赖,打包logging模块也会包含父工程的所有依赖,如果logging模块引用了common模块,父类工程中的依赖便会重复引用,出现错误。解决方案:一:不在父工程中引入依赖,只定义版本号。二:使用exclude标签,将common中的父类依赖排除掉。但在实际使用中发现并没有真正引入打包的jar包中并没有引入依赖jar包,而是保存的pom.xml文件,也就不会出现上面的问题。

如果需要打包成可执行文件,引入依赖的jar包,此项目是springboot项目,在打包的子模块中引入spring-boot-maven-plugin插件,spring-boot-maven-plugin 插件以Maven的方式为Springboot应用提供支持,能够将Springboot应用打包为可执行的jar或war文件,进行相应部署后即可启动Springboot应用。

<!-- 打包 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- 跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

   然后再次打包:

总结:

     maven打包不会引入jar包,打包的模块中依赖以pom.xml方式记录。

     使用spring-boot-maven-plugin插件,可以打包springboot项目。

其他:

1.存在两个root

解决方法,

    

2.mvnw和mvnw.cmd文件 引用于https://blog.csdn.net/qq_42840183/article/details/83057862

mvnw–全名是maven wrapper
  它的原理是在maven-wrapper.properties文件中记录你要使用的maven版本,当用户执行mvnw clean 命令时,发现当前用户的maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如刚才的mvn clean。

mvn文件夹–存放maven-wrapper.properties和相关jar包
mvn.cmd–执行mvnw命令的cmd入口
不控制maven版本,这些都可以delete

注意:子模块不要使用springboot项目,使用maven项目,不然可能导致打包后有多个启动主类,程序无法运行。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐