本身作了個小demo,忽然想練一下如何打包發佈,期間出現了兩個錯誤,第一個是加載不到主類,第二個是加載不到jsp文件,一會會把這兩個問題一一陳述,以及解決方法。java
由於springboot的項目打包的話他是根據pom.xml文件進行打包的,注意:(仔細觀看我寫的註釋,加載不到jsp文件那你還要回頭再看)mysql
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 <groupId>com.example.demo</groupId> 7 <artifactId>stores-erp</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <!-- 這邊要改爲咱們jar 由於咱們要大jar包 假如是war包的話就寫成war --> 10 <packaging>jar</packaging> 11 <name>stores-erp</name> 12 <description>stores-erp</description> 13 14 <parent> 15 <groupId>org.springframework.boot</groupId> 16 <artifactId>spring-boot-starter-parent</artifactId> 17 <version>1.5.18.RELEASE</version> 18 <relativePath /> <!-- lookup parent from repository --> 19 </parent> 20 21 <properties> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24 <java.version>1.8</java.version> 25 </properties> 26 27 <dependencies> 28 <dependency> 29 <groupId>cglib</groupId> 30 <artifactId>cglib</artifactId> 31 <version>3.2.5</version> 32 </dependency> 33 <dependency> 34 <groupId>com.github.pagehelper</groupId> 35 <artifactId>pagehelper-spring-boot-starter</artifactId> 36 <version>1.2.5</version> 37 </dependency> 38 <dependency> 39 <groupId>jstl</groupId> 40 <artifactId>jstl</artifactId> 41 <version>1.2</version> 42 </dependency> 43 <dependency> 44 <groupId>org.springframework.boot</groupId> 45 <artifactId>spring-boot-starter-jdbc</artifactId> 46 </dependency> 47 <dependency> 48 <groupId>org.springframework.boot</groupId> 49 <artifactId>spring-boot-starter-web</artifactId> 50 </dependency> 51 <dependency> 52 <groupId>org.apache.tomcat.embed</groupId> 53 <artifactId>tomcat-embed-jasper</artifactId> 54 </dependency> 55 <dependency> 56 <groupId>org.mybatis.spring.boot</groupId> 57 <artifactId>mybatis-spring-boot-starter</artifactId> 58 <version>1.3.2</version> 59 </dependency> 60 61 <dependency> 62 <groupId>org.springframework.boot</groupId> 63 <artifactId>spring-boot-devtools</artifactId> 64 <scope>runtime</scope> 65 </dependency> 66 <dependency> 67 <groupId>mysql</groupId> 68 <artifactId>mysql-connector-java</artifactId> 69 <scope>runtime</scope> 70 </dependency> 71 <dependency> 72 <groupId>org.springframework.boot</groupId> 73 <artifactId>spring-boot-starter-test</artifactId> 74 <scope>test</scope> 75 </dependency> 76 <!-- springboot工具 修改代碼後不需重啓即生效 --> 77 <dependency> 78 <groupId>org.springframework</groupId> 79 <artifactId>springloaded</artifactId> 80 </dependency> 81 <!-- 文件上傳 --> 82 <dependency> 83 <groupId>commons-fileupload</groupId> 84 <artifactId>commons-fileupload</artifactId> 85 <version>1.3.2</version> 86 </dependency> 87 </dependencies> 88 <build> 89 <!-- 注意最下面的build這塊必定要配置不然打jar的時候會說找不 到主類 --> 90 <plugins> 91 <plugin> 92 <groupId>org.springframework.boot</groupId> 93 <artifactId>spring-boot-maven-plugin</artifactId> 94 <!-- 注意:記住啊 下面<version>1.4.2.RELEASE</version> 95 這行代碼是必需要加的不加的話就全GG了,由於springboot打包有個bug 96 反正這行代碼別忘了加 97 --> 98 <version>1.4.2.RELEASE</version> 99 <configuration> 100 <mainClass>com.example.demo.SpringBootDay02Application</mainClass> 101 </configuration> 102 </plugin> 103 </plugins> 104 <!--這裏進行配置,後會自動的加載src/main/webapp下的全部文件 :配置Maven 對resource文件 過濾 --> 105 <!-- 我以前碰見的jsp找不到的問題 就是由於沒有配置好如下的文件因此纔會加載不到jsp配置文件 --> 106 <resources> 107 <resource> 108 <directory>src/main/webapp</directory> 109 <targetPath>META-INF/resources</targetPath> 110 <includes> 111 <include>**/**</include> 112 </includes> 113 </resource> 114 <resource> 115 <directory>src/main/resources</directory> 116 <filtering>true</filtering> 117 </resource> 118 </resources> 119 </build> 120 </project>
注意pom.xml最下面的build這塊必定要配置不然打jar的時候會說找不到主類(我標紅的地方則是Springboot的啓動類路徑,我們的路徑確定不同修改一下哈)linux
在啓動類當中加上繼承 SpringBootServletInitializer類並重寫configure方法,這是爲了打包springboot項目用的(不是單單實現就完事了,有些代碼還須要修改一下,仔細點)git
1 package com.example.demo; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.boot.builder.SpringApplicationBuilder; 6 import org.springframework.boot.web.support.SpringBootServletInitializer; 7 8 @SpringBootApplication 9 public class SpringBootDay02Application extends SpringBootServletInitializer{ 10 11 public static void main(String[] args) { 12 SpringApplication.run(SpringBootDay02Application.class, args); 13 } 14 //爲springboot打包項目用的 15 @Override 16 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 17 // TODO Auto-generated method stub 18 return builder.sources(this.getClass()); 19 } 20 }
代碼大體不須要修改,就是檢查各個應用鏈接之類的,假如在虛擬機上部署的話則須要進行一些修改,端口號啊,環境配置鏈接等等github
1 server.port=8080 2 server.servlet.context-path=/ 3 debug=false 4 5 spring.datasource.url=jdbc:mysql://localhost:3306/stores-erp?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true 6 spring.datasource.driver-class-name=com.mysql.jdbc.Driver 7 spring.datasource.username=root 8 spring.datasource.password=321 9 10 spring.mvc.view.prefix=/WEB-INF/jsp/ 11 spring.mvc.view.suffix=.jsp 12 13 mybatis.config-location=classpath:mybatis/mybatis-config.xml 14 mybatis.mapper-locations=classpath:mybatis/mappers/*/*.xml 15 mybatis.type-aliases-package=com.example.demo.pojo
點擊項目右鍵,Run As=》Maven Clean進行項目刷新web
Run As=》Maven insert進行項目打包,假如成功的話則出現如下頁面信息:spring
咱們找到項目中的target文件就能夠看到咱們的jar包文件等等了。sql
你能夠選擇直接把stores-erp-0.01-SNAPSHOT.jar拷貝出去,也能夠直接去他目錄下找它,我選擇的是找到項目中的jar文件的所在地址,在導航欄輸入cmd。apache
啓動jar包項目,注意:我以前作的時候這邊出了個錯誤,就是加載不到主類等等,是個很是操蛋的錯誤就是由於少加了個 - 這個坑我提大家踩了- -.(這個執行方式windows和linux上都同樣)windows