SpringBoot專案至Linux伺服器下的tomcat下執行(CentOS6)
打包前一定保證所有的jar包都引入了maven裡,要不然會報類找不到等錯誤導致打包失敗.這裡有個坑,如果你是從ssm專案遷移過來的,一定要刪除WEB-INF下的lib下面的包,要不然部署到伺服器會出很多意想不到的錯誤,因為你本地是正常執行的,所以錯誤很難查到,這裡用的是jsp所以打的是war包,而且用的是伺服器上的tomcat,所以要排除自帶的Tomcat
1:修改啟動類,繼承 SpringBootServletInitializer 並重寫 configure 方法
public class HdApplication extends SpringBootServletInitializer implements CommandLineRunner{public static void main(String[] args) {
SpringApplication.run(HdApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
}
2 修改pom檔案中jar 為 war,<build>節點中增加<finalName>hdys</finalName>,可生成自定義war包的名字
<groupId>com.hdys.www</groupId>
<artifactId>HD</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<finalName>hdys</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>${project.basedir}/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>
</resources>
</build>
3:修改pom,排除tomcat外掛
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
:4:打包部署到容器
使用命令 mvn clean package 打包後,同一般J2EE專案一樣部署到web容器。
或cmd 進入專案根目錄:mvn package打包
成功後會在專案根目錄生成target資料夾,進去後找到生成的war
5:然後用上傳工具上傳到伺服器