Idea SpringBoot多模块项目打包血泪史

本文主要介绍基于Idea的SpringBoot多模块打包中遇到的各种问题以及解决方法

基本概况介绍:

    小弟之前是用的myeclipse进行的开发,但是在建立多模块的时候却错误的使用了web archtype,然后强转的SpringBoot,在工具上能正常跑起来,但是打包的时候,出现了打包不完整,打包无法聚合在一起,以及打的包没有主类等等问题。灰心丧气之下,无奈转为了idea开发,基于已有代码进行项目框架重构,希望问题能够得到解决。

    问题一:idea默认的language level是1.5,但是一般不用1.5了,我用的1.8,即使在structure里面进行了修改,一旦对代码或者pom进行修改后,idea又会重新变成1.5,参考了网上教程,说是在pom文件下加入标签就可以一劳永逸,由于采用的多模块,此方法未能解决问题。后来无意重建项目框架的时候,发现在选用project sdk时,只要不不用默认的project Sdk(1.8),而使用jdk(1.8),就不会发生转成1.5的问题。

 

    问题二:打包时默认会进行测试,而由于多模块架构,测试一直失败,于是我便想到跳过测试。跳过测试的三种方法:

        1、在pom文件里加插件:该方法我未曾使用过,因为是多模块结构以及springboot的<parant>原因,导致每个pom都要添加,麻烦

        <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build>

        2、打开控制台窗口,cd到父项目下,执行命令(如果未配置maven环境变量请自行配置):mvn clean install -DskipTests

        3、同上,执行命令:mvn clean install -Dmaven.test.skip=true

         这里附上Maven的安装配置教程:https://blog.csdn.net/fengwuJ/article/details/89763455

    问题三:这个时候打包应该会出问题,首先是因为plugin的原因,SpringBoot自带的plugin会使模块找不到依赖。解决办法:

        修改父项目pom:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skipTests>true</skipTests>    <!--默认关掉单元测试 -->
            </configuration>
        </plugin>
    </plugins>
</build>

        修改web模块pom:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <!-- 指定该Main Class为全局的唯一入口 -->
        <mainClass>com.CmsWebApplication</mainClass>
        <layout>ZIP</layout>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
            </goals>
        </execution>
    </executions>
</plugin>

    问题四:成功打包后,运行web下面的jar文件,发现springboot找不到resources下的templates中的html文件。解决办法:

@RequestMapping("/toMain")
public String toMain() {
//返回的一般是return "/" + "templates下的包名(user或者admin)" + "/" +"main"
//修改为
   return "templates下的包名(user或者admin)" + "/" +"main";//  即去掉最前面的 /
}

    问题五:上传项目到github中,idea的上传和myeclipse不一样,myeclipse需要在github中建立一个远程仓库,然后输入远程仓库地址并通过验证才能进行上传;idea只需要在settings-->Version Control --> Github中配置好账户,然后在菜单栏点击VCS-->Import into version control --> share project on github,填上远程仓库的name(不用先去创建,idea会自动创建),完成commit即可push。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值