欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-03 10:37:21
...

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

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

<dependency>
    <artifactId>athena-common</artifactId>
    <groupId>com.xxx.xxx</groupId>
    <version>1.0.0<version>
<dependency>

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

我的解决办法是:

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

               <plugin>
                   <artifactId> maven-assembly-plugin </artifactId>
                   <configuration>
                        <descriptorRefs>
                             <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                   </configuration>
                   <executions>
                        <execution>
                             <id>make-assembly</id>
                             <phase>package</phase>
                             <goals>
                                  <goal>single</goal>
                             </goals>
                        </execution>
                   </executions>
              </plugin>

使用 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包放到本地仓库中:

    <!--
        指定maven插件编译版本
        1:maven:since2.0, 默认用jdk1.3来编译,maven 3.x 
           貌似是默认用jdk 1.52:windows默认使用GBK编码,java项目经常编码为utf8,
          也需要在compiler插件中指出,否则中文乱码可能会出现编译错误。 
     -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF8</encoding>
        </configuration>
    </plugin>


相关标签: maven