1、修改Springboot啓動文件
原來的Springboot啓動文件(示例)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CmsApplication {
public static void main(String[] args) {
SpringApplication.run(CmsApplication.class, args);
}
}
需要修改爲
public class CmsApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意這裏要指向原先用main方法執行的Application啓動類
return builder.sources(App.class);
}
}
在同級目錄中增加一個class文件
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.wechargame.cms.mapper")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
修改pom.xml
<!-- 修改爲war包-->
<groupId>com.weCharGame.cms</groupId>
<artifactId>weCharGameCms</artifactId>
<version>0.1.0</version>
<packaging>war</packaging>
---------------------------------------------------------------
<!-- 修改spring-boot-starter-web去掉嵌入式的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>
---------------------------------------------------------------
<!-- 增加-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--打成war包時需要用到-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在項目中增加一個tomcat服務器
這個地方關鍵是需要將Deployment中的artifact中選擇待有exploded,並且在appliaction context 中添加項目名。
注意 : 這個項目名需要和pom中的artifactId相同。
<groupId>com.weCharGame.cms</groupId>
<artifactId>weCharGameCms</artifactId>
<version>0.1.0</version>
<packaging>war</packaging>
這樣就可以在tomcat使用了,但是和Springboot的啓動速度不能比啊,太慢了!
打war包,部署到服務器
先執行 maven 的 clean命令, 執行package, 將打包的項目放到tomcat的webapps目錄下就可以了。
最後,關於項目路徑問題解決方案:
我使用thymeleaf,使用在公共的js文件中添加
const context = [[${#httpServletRequest.getContextPath()}]];
然後在每一個ajax請求中拼接上context就好。
在靜態資源中使用thymeleaf的語法:
<link rel="stylesheet" th:href="@{/static/layui/css/layui.css}">
<script type="text/javascript" th:src="@{/static/js/jquery-3.3.1.js}"></script>
這樣就基本解決項目部署問題了!