1. 程式人生 > >eclipse+maven搭建springboot專案入門

eclipse+maven搭建springboot專案入門

開始建立maven專案 選單 -> File -> New -> Other -> Maven -> Maven -> Maven Project -> New Maven Project 勾上這個 Create a simple project (skip archetype selection) group Id 包名 例如 com.svc.demo Artifact Id 專案名 springboot-svc-demo 最終pom.xml如下(mavne是通過pom.xml來維護管理專案的,最終只要維護pom .xml即可)

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.svc.demo</groupId>
    <artifactId>springboot-svc-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
     
    <!--
        <name>springboot-svc-demo</name>
        <url>http://maven.apache.org</url>
        -->
    
    <!-- 引入springboot parent-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath/>
    </parent>
    
    <!-- 引入springCloud,單獨springboot不需要-->
    <!--
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-parent</artifactId>
                    <version>Edgware.SR3</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        -->
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--swagger2元件
            <springfox-swagger2.version>2.6.0</springfox-swagger2.version>
            -->
        <!--格式化mavne時間
            <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
            -->
    </properties>
   
    <!-- 依賴元件-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--thymeleaf 模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--測試元件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--新增html5支援-->
        <dependency> 
            <groupId>net.sourceforge.nekohtml</groupId> 
            <artifactId>nekohtml</artifactId>
        </dependency>
        <!-- 熱啟動,便於開發
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
            </dependency>
            -->
        <!--web 元件-->
        <!--
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            -->
        <!-- 新增Swagger2依賴,用於生成介面文件
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${springfox-swagger2.version}</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${springfox-swagger2.version}</version>
            </dependency>
            -->
    </dependencies>
  
    <build>
        <plugins>
            <!--打包外掛-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- YUI Compressor Maven js,css壓縮外掛 -->
            <plugin>  
                <groupId>net.alchim31.maven</groupId>  
                <artifactId>yuicompressor-maven-plugin</artifactId>  
                <version>1.5.1</version>  
                <executions>  
                    <execution>   
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>compress</goal>
                        </goals> 
                    </execution>  
                </executions>  
                <configuration>  
                    <!-- 讀取js,css檔案採用UTF-8編碼預設就是utf-8 -->
                    <encoding>UTF-8</encoding>
                    <!-- 不顯示js可能的錯誤 -->
                    <jswarn>false</jswarn>  
                    <!-- 若存在已壓縮的檔案,會先對比原始檔是否有改動  有改動便壓縮,無改動就不壓縮 -->
                    <force>true</force>  
                    <!-- 在指定的列號後插入新行   -->
                    <linebreakpos>-1</linebreakpos>  
                    <!-- 壓縮之前先執行聚合檔案操作  -->
                    <preProcessAggregates>true</preProcessAggregates>  
                    <!-- 壓縮後儲存檔案字尾 無後綴 -->
                    <nosuffix>true</nosuffix>  
                    <!-- 源目錄,即需壓縮的根目錄 -->
                    <sourceDirectory>src/main/static</sourceDirectory>
                    <outputDirectory>target/classes</outputDirectory>
                    <force>true</force>
                    <!-- 壓縮js和css檔案  -->
                    <includes> 
                        <include>*/js/**/*.js</include>  
                        <include>*/css/**/*.css</include>  
                    </includes>
                    <excludes>
                        <exclude>**/*.min.js</exclude>
                        <exclude>**/*-min.js</exclude>
                        <exclude>**/index/carousel.js</exclude>
                        <exclude>**/3dprint/layer/**/*.js</exclude>                
                    </excludes> 
                </configuration>  
            </plugin>
            <!-- html頁面中的 css,js新增版本號外掛 -->
            <!--plugin>
                <groupId>com.google.code.maven-replacer-plugin</groupId>
                <artifactId>replacer</artifactId>
                <version>1.5.3</version>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includes>
                        <include>${basedir}/target/classes/templates/*.html</include>
                        <include>${basedir}/target/classes/templates/**/*.html</include>
                    </includes>
                    <replacements>
                        <replacement>
                            <token>\.css\"</token>
                            <value>.css?v=${maven.build.timestamp}\"</value>
                        </replacement>
                        <replacement>
                            <token>\.css\'</token>
                            <value>.css?v=${maven.build.timestamp}\'</value>
                        </replacement>
                        <replacement>
                            <token>\.js\"</token>
                            <value>.js?v=${maven.build.timestamp}\"</value>
                        </replacement>
                        <replacement>
                            <token>\.js\'</token>
                            <value>.js?v=${maven.build.timestamp}\'</value>
                        </replacement>
                    </replacements>
                </configuration>
                </plugin-->
        </plugins>
    </build>
</project>

建立啟動入口以及專案結構

@SpringBootApplication
public class Application extends SpringBootServletInitializer
{
    public static void main(String[] args)
    {
        SpringApplication.run(Application.class, args);
    }

}

在這裡插入圖片描述

├── clean-run.sh
├── logs/            日誌檔案目錄
│   ├── sb2-web_test_2018-06-02_0959.0.log
│   └── sb2-web_test.log
|               
├── mvnw
├── mvnw.cmd
├── pom.xml
├── pysrc/            python 指令碼目錄
├── README.md
├── src/              原始檔目錄
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── mydomain
│   │   │           ├── guru/          工具包目錄
│   │   │           │   ├── AccountValidator.java
│   │   │           │   ├── DateConverter.java
│   │   │           │   ├── JsonBeanUtil.java
│   │   │           │   ......
│   │   │           └── webapi/        web 介面目錄
│   │   │               ├── Application.java
│   │   │               ├── config/    sb2 app 配置檔案目錄
│   │   │               │   ├── CORSFilter.java
│   │   │               │   ├── JwtAuthenticationEntryPoint.java
│   │   │               │   ├── JwtAuthenticationFilter.java
│   │   │               │   ├── WebMvcConfig.java
│   │   │               │   ├── WebSecurityConfig.java
│   │   │               │   └── ......
│   │   │               ├── controller/   控制器目錄
│   │   │               │   ├── AuthenticationController.java
│   │   │               │   ├── KaptchaController.java
│   │   │               │   └── UserController.java
│   │   │               ├── dao/          DAO 目錄 (或者稱為:repository)
│   │   │               │   ├── KaptchaTokenDao.java
│   │   │               │   └── UserDao.java
│   │   │               ├── model/        Model 目錄 (繫結資料表)
│   │   │               │   ├── AuthToken.java
│   │   │               │   ├── Constants.java
│   │   │               │   ├── dto/      DTO 資料傳輸元件目錄
│   │   │               │   │   ├── KaptchaTokenDto.java
│   │   │               │   │   └── UserDto.java
│   │   │               │   ├── KaptchaToken.java
│   │   │               │   ├── LoginUser.java
│   │   │               │   ├── Role.java
│   │   │               │   └── User.java
│   │   │               └── service/      服務介面目錄     
│   │   │                   ├── impl/     服務介面實現目錄
│   │   │                   │   ├── KaptchaTokenServiceImpl.java
│   │   │                   │   └── UserServiceImpl.java
│   │   │                   ├── KaptchaTokenService.java
│   │   │                   └── UserService.java
│   │   └── resources/          資源總目錄
│   │       ├── application-dev.properties         開發配置
│   │       ├── application-prod.properties        產品配置
│   │       ├── application.properties             當前配置
│   │       ├── application-test.properties        測試配置
│   │       ├── kaptcha.properties                 圖片驗證碼配置
│   │       ├── logback-spring.xml                 日誌檔案配置
│   │       ├── mysql-webapi.cresql                資料庫建立語句
│   │       └── templates/                         web 模板目錄
│   │       │   ├── user/
│   │       │   ├── login.html
│   │       │   ......
│   │       ├── static/                            靜態資源目錄
│   │              ├── bootstrap-4.1.0/
│   │              │   ├── css/
│   │              │   │   ├── bootstrap.css
│   │              │   │   ├── bootstrap.css.map
│   │              │   │   ├── bootstrap-grid.css
│   │              │   │   ├── bootstrap-grid.css.map
│   │              │   │   ├── bootstrap-grid.min.css
│   │              │   │   ├── bootstrap-grid.min.css.map
│   │              │   │   ├── bootstrap.min.css
│   │              │   │   ├── bootstrap.min.css.map
│   │              │   │   ├── bootstrap-reboot.css
│   │              │   │   ├── bootstrap-reboot.css.map
│   │              │   │   ├── bootstrap-reboot.min.css
│   │              │   │   └── bootstrap-reboot.min.css.map
│   │              │   └── js
│   │              │       ├── bootstrap.bundle.js
│   │              │       ├── bootstrap.bundle.js.map
│   │              │       ├── bootstrap.bundle.min.js
│   │              │       ├── bootstrap.bundle.min.js.map
│   │              │       ├── bootstrap.js
│   │              │       ├── bootstrap.js.map
│   │              │       ├── bootstrap.min.js
│   │              │       └── bootstrap.min.js.map
│   │              ├── css
│   │              │   └── common.css
│   │              └── js
│   │                  └── jquery
│   │                      ├── jquery-1.11.2.min.js
│   │                      └── jquery.min.map
│   └── test
│       └── java
│           └── com
│               └── yourdomain
│                   └── webapi/
│                       ├── ApplicationTests.java
│                       └── UserDocumentationTests.java        自動文件生成測試
└── update-build.sh       原始檔自動版本更新指令碼