MAVEN学习笔记-解决Spring cloud中项目间有依赖关系导致打包报错问题

项目Module之间有依赖关系时会导致打jar包失败。

比如,athena-eureka、athena-keystone等模块会在pom中依赖athena-common


    athena-common
    com.xxx.xxx
    1.0.0

那么,当我打包athena-keystone模块时,会报错,说没能在maven仓库中找到这个依赖。

我的解决办法是:

1、使用maven-assembly-plugin插件进行打包,打包所有pom依赖,并将这些依赖的Jar包解压为class文件。

               
                    maven-assembly-plugin 
                   
                        
                             jar-with-dependencies
                        
                   
                   
                        
                             make-assembly
                             package
                             
                                  single
                             
                        
                   
              

使用 mvn clean package -DskipTests 命令进行打包操作,忽略测试代码

注意,其实原本maven-assembly-plugin插件的打包命令为mvn compile assembly:single,这里可以用mvn package打包是因为我们将插件的goal绑定到了特定的phase上。

phase和goal可以这样理解:maven命令格式是mvn phase:goal,在本例中single为goal,将goal绑定到package这个phase上,所以用户只须执行maven package即可。

2、将本地jar包添加到本地仓库

mvn install:install-file -Dfile=athena-common-1.0.0.jar -DgroupId=com.xxx.xxx 
-DartifactId=athena-common -Dversion=1.0.0 -Dpackaging=jar

其中:-DgroupId和-DartifactId的作用是指定了这个jar包在repository的安装路径,只是用来告诉项目去这个路径下寻找这个名称的jar包。

这样的话,依赖该模块的模块进行打包时就可以在本地仓库中找到这个jar包。


后记:在最外层的pom中加入以下编译插件即可在一键执行所有模块的打包插件,不需要手动把被依赖模块的jar包放到本地仓库中:

    
    
        org.apache.maven.plugins
        maven-compiler-plugin
        3.7.0
        
            1.8
            1.8
            UTF8
        
    


你可能感兴趣的:(maven,maven)