1. 程式人生 > >Springboot+Maven多模組開發 (一)初始化工程(新建第一個web工程)

Springboot+Maven多模組開發 (一)初始化工程(新建第一個web工程)

學習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:
<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>
在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裡面設定的為準。