idea打war包的两种方式
idea打war包
方式一
打war包快捷键:Ctrl+Shift+Alt+S
执行完上述操作之后参考下图:
最后再按照下图操作:
最后再对应的文件夹下面就会生成我们的war包:
方式二:通过maven插件打包
maven构建过程,Lifecycle
mvn clean ----- 【清理】
将编译(mvn compile)产生的【target】文件夹删除掉,但是不会删除本地的maven仓库已经生成的jar文件。
mvn compile — 【编译】
在项目根目录生【target】目录,里面包含【classes】文件夹,里面是已经编译好的java类(.class文件)
mvn test-------- 【测试】
会先生成target文件夹,里面有【classes】和【test-classes】文件夹,所 以执行mvn test命令时,会先编译项目,在执行测试代码
mvn package----【打包】
看到项目的根目录下【编译】后生成的【target】文件夹中多了一个Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是打包成功之后Maven帮我们生成的jar文件,package命令会先执行编译再执行打包
mvn install
是把maven构建项目的【清理clean】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能做的事情最多,所以这个最常用
maven在执行一个生命周期的命令的是时候将会执行之前的所有生命周期操作,比如执行mvn install,会执行前面一系列的动作包括 compile , package , test 等,具体请查看maven的官方文档。这个特性使maven的命令更加简洁易用。
maven的debugg信息非常完备,需要查看debug信息只要在命令后面添加 -X 参数即可,如:
mvn clean package -X 就能看到非常丰富的DEBUG信息。
使用idea自带的打包方式(多module时maven打包插件不管用)
问题1:项目近期要上线,在对SpringCloud项目进行打包时,先是打包报错,找不到依赖的entity、utils等module项目
解决1:此情况下,IDEA打包顺序应该为:clean–>compile–>install,好了,打包完成。但是遇到问题2
问题2:项目在IDEA中可以正常运行,但是打包后运行jar包,还是找不到依赖module的CLASS
解决2:在parent(也就是父module)的pom.xml文件中,加入如下代码:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
在被依赖的项目中(公共module项目,比如:utils、entity、cloud等等)的pom.xml文件中加入:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
Springboot项目打成War包和Jar包的区别以及如何转换
在打包spring boot项目时,需要使用如下插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
如果在用maven构建多模块项目时,不要将此插件放到parent pom中,否则如果有sub module不是spring boot应用,在打包时就会出错。只将该插件添加到是spring boot项目的子模块。