IDEA项目开发完成后,怎么进行打包和发布?
有2种方案,第一种是用IDEA直接打包,第二种是用maven打包。
我们的项目都是通过Jenkins调用maven命令行进行打包和推送线上服务器。
这里不介绍IDEA本身的打包,只讨论maven打包的2种方式:
0、pom配置:
在打包前,要先对项目的pom文件增加一些配置:
0.1、在<project>下添加 <packaging>jar</packaging>,表示打jar包
0.2、在<build> 下添加 <finalName>xxx</finalName>,这样打包后的文件名就是 xxx.jar
0.3、在<build>下添加 <executions>配置
下面是pom.xml配置参考
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.beinet.firstpg</groupId>
<artifactId>beinet-firstpg</artifactId>
<packaging>jar</packaging> <!-- 新增行 -->
<build>
<finalName>beinet-firstpg</finalName> <!-- 新增行 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 新增行 -->
<executions><execution><goals><goal>repackage</goal></goals></execution></executions>
</plugin>
</plugins>
</build>
1、在IDEA右侧的Maven窗口,点开项目下的Lifecycle,双击下面的 package 即可,如下图:
注:如果项目里的单元测试有执行失败的,会导致jar打包出不来
此时,要么修改单元测试,要么按下图,点那个小圆圈禁用测试,就可以出来jar了
2、通过maven命令行打包jar文件:mvn clean -DskipTests=true package -f E:\mysource\JavaDemo\pom.xml
命令行简要说明:
clean: 清空目标目录,默认是pom文件所在的target目录。
-DskipTests: 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip: 不执行测试用例,也不编译测试用例类。
package: 打包生成jar文件,默认输出到pom文件所在的target目录
test: 运行单元测试
官网:http://maven.apache.org/guides/getting-started/index.html
3、通过上面2种方式,都会在pom.xml所在目录下,创建一个target目录,jar文件就在这里。
把这个jar文件复制到任意目录,用如下命令启动:
java
-Dserver.port=12086
-Xms512m
-Xmx512m
-Xmn192m
-XX:+UseConcMarkSweepGC
-Dlogging.config=/data/app/conf/java/logback-spring.xml
-Deureka.instance.prefer-ip-address=true
-Deureka.client.service-url.defaultZone=http://eureka.beinet.com:12010/eureka/
-Dspring.cloud.config.username=youbl
-Dspring.cloud.config.password=123456
-Dspring.cloud.inetutils.preferred-networks=172.*
-Dspring.profiles.active=preview
-jar /data/app/beinet-firstpg/beinet-firstpg.jar
命令行简要说明:
-Dxxx=xxx 设定系统属性值,可以覆盖application.yml里的配置。可以在代码里用 System.getProperty(“xxx”)获取
-Dserver.port=12086 指定服务器监听端口
-Dlogging.config=/data/app/conf/java/logback-spring.xml 指定日志使用的配置文件,忽略jar里打包的配置
-jar 指定要运行的jar文件,该参数必须放命令行最后,否则指定的其它参数会无效
-Xms512m 设置 Java 堆内存初始分配大小
-Xmx512m 设置 Java 堆内存可分配的最大上限
-XX:newSize=192m 设置新生代初始内存分配大小,不能超过ms的值
-XX:MaxnewSize=192m 设置新生代最大内存上限
-Xmn192m 设置新生代初始内存和最大上限内存,等效于上面2个配置同时设定
-XX:PermSize=128m 非堆内存初始分配大小
-XX:MaxPermSize=128m 非堆内存最大上限大小
注:非堆内存指不会垃圾回收的内存,Java代码不可访问的内存,通常用于JVM优化所需内存、JIT编译缓存、类结构与方法区代码等。
代码Demo:https://github.com/youbl/JavaDemo