Springboot+Maven多模組開發 (一)初始化工程(新建第一個web工程)
阿新 • • 發佈:2018-12-31
學習Springboot+maven多模組開發筆記。
首先建立一個空專案,新建一個pom檔案,該pom檔案是整個工程的parent pom。
pom檔案內容如下:
<pre name="code" class="html"><?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cn</groupId> <artifactId>SpringBoot</artifactId> <packaging>pom</packaging> <version>1.0.0-SNAPSHOT</version> <modules> <module>webapp-pc</module> </modules> <name>SpringBoot Maven Webapp </name> <url>http://maven.apache.org</url> <dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.3.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <!--如果要把springboot工程打包成war執行,需要該jar--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-legacy</artifactId> <version>1.0.2.RELEASE</version> </dependency> </dependencies> </dependencyManagement> </project>
這裡用import的方式引入springboot的parent,因為我們要分模組開發,由一個父pom來管理 所有模組的依賴,總不能在每個模組裡面都引入。
新建第一個Maven web工程:
webapp-pc的pom檔案內容如下:<pre name="code" class="html"><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/maven-v4_0_0.xsd"> <parent> <artifactId>SpringBoot</artifactId> <groupId>com.cn</groupId> <version>1.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>webapp-pc</artifactId> <packaging>war</packaging> <name>webapp-pc Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--要使用LOG4J,去掉該依賴--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> </exclusion> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!--使用log4j,不使用預設的logback--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency> <!--要打成war包執行,需要該依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-legacy</artifactId> </dependency> <!--要打成war包執行,去掉內嵌的tomcat--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>webapp-pc</finalName> </build> </project>
我一般喜歡打包成war放到tomcat下執行,不喜歡直接打包成一個富jar執行,所以加入了spring-boot-legacy依賴,去掉了spring-boot-starter-tomcat執行依賴。 如果你的servlet容器版本低於2.5,在maven打包war的時候會找不到web.xml而報錯,需要在WEB-INF下加入一個空的web.xml:
在app啟動類裡面:<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 這個空的xml,為了假裝自己是一個web工程,不要在這裡寫任何東西 --> </web-app>
import org.springframework.boot.context.web.SpringBootServletInitializer;
/**
* Created by XX on 2016/5/2.
*/
@SpringBootApplication
public class App extends SpringBootServletInitializer {
// private Logger logger = LoggerFactory.getLogger(App.class);
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(App.class);
}
public static void main(String[] args){
SpringApplication.run(App.class, args);
}
}
為了打包war包執行,需要繼承SpringBootServletInitializer 。
下面新建一個測試Controller:
package com.cn.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by XX on 2016/5/2.
*/
@RestController
public class TestController {
@RequestMapping("/test")
public String test(){
return "webapp start..";
}
}
最後在tomcat啟動該工程,在瀏覽器訪問:http://localhost:8080/webapp-pc/test
因為我打包成war包在自己的tomcat釋出,所以工程路徑和埠都是以tomcat裡面設定的為準。