一、打包springboot为jar包:
1、pom.xml 需要定义: <packaging>jar</packaging>
2、如果有外部引用包,需要一起打包,pom.xml 配置如下:
<resources>
<!-- 打包成jar发布时,才需要纳入外部包 start -->
<resource>
<directory>src/main/webapp/WEB-INF/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/classes/</targetPath>
</resource>
<!-- 打包成jar发布时,才需要纳入外部包 end -->
</resources>
3、打包:可通过Eclipse—项目右键—run as—Maven install 进行打包,jar包在本地maven仓库下;或者项目根目录下执行 mvn clean package 命令执行打包,打好的jar包(比如springboot-0.0.1-SNAPSHOT.jar)在target目录下;
4、测试:java -jar springboot.jar
二、部署:
1、springbootjar放入服务器目录下,可用 java -jar springboot-0.0.1-SNAPSHOT.jar命令启动;
2、如果开发与正式环境所用JDK不一致,在服务器启动则需要指定jdk版本,简单启动脚本(startup.sh)如下:
export JAVA_HOME=/opt/java/jdk1.8.0_161
export JAVA=$JAVA_HOME/bin/java
nohup $JAVA -jar springboot-0.0.1-SNAPSHOT.jar -Djava.ext.dirs=$JAVA_HOME/lib &
startup.sh脚本文件与包目录同级;
(服务器的JDK为linux版本的,而不是windows版本的哟,下载linux版解压即可,脚本指定好jdk路径)
三、简单关闭springboot:
1、ps -ef 命令找到进程pid , kill pid ,简单粗暴
2、以端口号找进程号PID 如 netstat -nlp|grep :9090 kill pid ,简单粗暴
四、可能遇到问题处理:
1、startup.sh 无权限访问 ——赋权操作:chmod 777 startup.sh
2、执行.sh脚本时出现$’\r’: 未找到命令,是因为命令文件直接从windows 复制过来导致的:
安装dos2unix ,安装命令:yum install -y dos2unix ;转换命令 :dos2unix startup.sh
转换后再执行startup.sh
五、pom.xml文件简单完整版:
<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>
<packaging>jar</packaging>
<groupId>springboot</groupId>
<artifactId>springboot-leasing</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis</name>
<description> Spring Boot</description>
<properties>
<java.version>1.6</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<tomcat.version>7.0.59</tomcat.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- TO Support JDK 1.6 start -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-juli</artifactId>
<version>${tomcat.version}</version>
</dependency>
<!-- TO Support JDK 1.6 end -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--热启动:每自修改后, 程序自动启动spring Application上下文。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- 阿里json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle/ojdbc6 -->
<!-- <dependency> -->
<!-- <groupId>com.oracle</groupId> -->
<!-- <artifactId>ojdbc6</artifactId> -->
<!-- <version>12.1.0.1-atlassian-hosted</version> -->
<!-- <scope>test</scope> -->
<!-- </dependency> -->
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
<resources>
<!-- 打包成jar发布时,才需要纳入外部包 start -->
<resource>
<directory>src/main/webapp/WEB-INF/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/classes/</targetPath>
</resource>
<!-- 打包成jar发布时,才需要纳入外部包 end -->
</resources>
</build>
</project>