IDEA Maven编译打包SpringBoot项目、含有依赖父项目时子项目打jar包、war包步骤详解

在部署SpringBoot多工程时,使用IDEA进行war包打包遇到问题。解决方法:通过Maven的clean和package操作代替IDEA直接打包。若子项目依赖父项目,需先将父项目打包为jar,确保父项目packaging为jar,设置不同profile。完成jar打包后,将父项目packaging改为war,再次执行package。

  昨天在部署公司SpringBoot多工程项目时,用Idea打war包准备发布时遇到了各种各样的问题,具体如下:

1、用idea给项目打war包,发现打出来的war包里面没有lib文件夹,这个问题我查了好多也没找到原因,同样的项目和配置,同事的可以直接打包使用。

解决方案:

  改用Maven的打包方式,点击idea右侧栏Maven Projects ,然后找到项目名下面的Lifecycle文件夹,点击clean,先把项目clean一遍、然后再点击package,项目就打包好了。如下:

2、如果子项目有依赖父项目中的类,这时候需要先把父项目打成jar包,然后再对子项目打war包,否则会报错。首先需要确保父项目中的pom文件里packaging为jar,其次,需要在打包时去掉多余的js/css/application启动类等文件,因为父项目也需要最终打成war包,所以我们pom文件中写了2个profile,打jar包时激活第一个<activeByDefault>为true时默认激活,打war包需要激活第二个。配置信息如下:

<packaging>jar</packaging>

<profiles>
   <!-- 部署提供给其他工程依赖用的jar包 -->
   <profile>
      <id>rely</id>
      <activation>
         <!-- 设置默认激活这个配置 -->
         <activeByDefault>true</activeByDefault>
      </activation>
      <build>
         <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <excludes>
                     <exclude>**/UrpApplication.java</exclude>
                  </excludes>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>3.0.0</version>
            </plugin>
         </plugins>
      </build>
   </profile>
   <!-- 部署common工程发布用的war包 -->
   <profile>
      <id>deploy</id>
      <build>
         <finalName>common</finalName>
         <plugins>
            <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>3.0.0</version>
            </plugin>              
         </plugins>
      </build>
   </profile>
</profiles>

a)、先clean一下父项目,然后点击install,这里需要注意一下,父项目打jar包需要使用install,原因是package功能不会把打包好的jar包放到远程仓库,在执行子项目打包时会报错,提示子项目找不到父项目的依赖,原因就是远程仓库中没有这个jar包,所有需要使用install,不清楚install和package区别的请自行百度。

b)、等每个子项目全部打包完毕后,修改父项目pom文件中packaging为war,激活第二个profile属性,clean项目后执行package即可。

<packaging>war</packaging>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值