Maven介绍与应用

文章作者:Tyan
博客:noahsnail.com | CSDN | 简书

1. Maven介绍

Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。Maven主要是一个针对Java的项目管理和构建自动化工具。Maven主要处理软件构建的两个方面:1、描述软件是如何构建的,即项目构建;2、描述软件的依赖,即依赖管理。

2. Maven安装

下载地址:https://maven.apache.org/download.cgi,解压之后找到Readme.txt按照说明安装即可。也可以按照Maven官网https://maven.apache.org/install.html安装。
作者是在Mac上使用brew install maven命令安装的。

安装成功之后,可以运行mvn -v命令来查看:

# 查看java版本
$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

# 查看mvn版本,确认安装成功
$ mvn -v/-version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/***/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.6", arch: "x86_64", family: "mac"

注:Maven安装之前要确保你的系统中已经安装了JDK,可用java -version查看。

3. Maven目录结构

Maven是一个项目管理和构建自动化工具。Maven使用惯例优于配置的原则。Maven项目的目录结构如下:

目录 目的
${basedir} 存放 pom.xml和所有的子目录
${basedir}/src/main/java 项目的 java源代码
${basedir}/src/main/resources 项目的资源,比如说 property文件
${basedir}/src/test/java 项目的测试类,比如说 JUnit代码
${basedir}/src/test/resources 测试使用的资源
${basedir}/target 项目输出目录

maven项目编译的classes文件会放在${basedir}/target/classes目录下,打包的文件会放在${basedir}/target目录下。

4. Maven命令

测试mvn命令的项目为Spring Boot项目,项目创建参考我的文章:Spring Boot 2.0.0参考手册_中英文对照_Part II_11-12

链接为:CSND | 简书 | 个人博客

4.1 mvn compile 编译项目,编译的内容在target目录(默认)

$ mvn compile
[INFO] Scanning for projects...
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/1.4.1.RELEASE/spring-boot-starter-parent-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/1.4.1.RELEASE/spring-boot-starter-parent-1.4.1.RELEASE.pom (8 KB at 2.1 KB/sec)
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-web/1.4.1.RELEASE/spring-boot-starter-web-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-web/1.4.1.RELEASE/spring-boot-starter-web-1.4.1.RELEASE.pom (2 KB at 2.0 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starters/1.4.1.RELEASE/spring-boot-starters-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starters/1.4.1.RELEASE/spring-boot-starters-1.4.1.RELEASE.pom (7 KB at 9.1 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter/1.4.1.RELEASE/spring-boot-starter-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter/1.4.1.RELEASE/spring-boot-starter-1.4.1.RELEASE.pom (2 KB at 2.0 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot/1.4.1.RELEASE/spring-boot-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot/1.4.1.RELEASE/spring-boot-1.4.1.RELEASE.pom (10 KB at 12.2 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-autoconfigure/1.4.1.RELEASE/spring-boot-autoconfigure-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-autoconfigure/1.4.1.RELEASE/spring-boot-autoconfigure-1.4.1.RELEASE.pom (20 KB at 16.3 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-logging/1.4.1.RELEASE/spring-boot-starter-logging-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-logging/1.4.1.RELEASE/spring-boot-starter-logging-1.4.1.RELEASE.pom (2 KB at 0.7 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-tomcat/1.4.1.RELEASE/spring-boot-starter-tomcat-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-tomcat/1.4.1.RELEASE/spring-boot-starter-tomcat-1.4.1.RELEASE.pom (2 KB at 1.8 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-test/1.4.1.RELEASE/spring-boot-starter-test-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-test/1.4.1.RELEASE/spring-boot-starter-test-1.4.1.RELEASE.pom (4 KB at 2.5 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test/1.4.1.RELEASE/spring-boot-test-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test/1.4.1.RELEASE/spring-boot-test-1.4.1.RELEASE.pom (5 KB at 2.5 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test-autoconfigure/1.4.1.RELEASE/spring-boot-test-autoconfigure-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test-autoconfigure/1.4.1.RELEASE/spring-boot-test-autoconfigure-1.4.1.RELEASE.pom (6 KB at 3.8 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-web/1.4.1.RELEASE/spring-boot-starter-web-1.4.1.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter/1.4.1.RELEASE/spring-boot-starter-1.4.1.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot/1.4.1.RELEASE/spring-boot-1.4.1.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-autoconfigure/1.4.1.RELEASE/spring-boot-autoconfigure-1.4.1.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-logging/1.4.1.RELEASE/spring-boot-starter-logging-1.4.1.RELEASE.jar
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-web/1.4.1.RELEASE/spring-boot-starter-web-1.4.1.RELEASE.jar (3 KB at 3.3 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-tomcat/1.4.1.RELEASE/spring-boot-starter-tomcat-1.4.1.RELEASE.jar
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-tomcat/1.4.1.RELEASE/spring-boot-starter-tomcat-1.4.1.RELEASE.jar (3 KB at 1.6 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter/1.4.1.RELEASE/spring-boot-starter-1.4.1.RELEASE.jar (3 KB at 1.1 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-logging/1.4.1.RELEASE/spring-boot-starter-logging-1.4.1.RELEASE.jar (3 KB at 0.9 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot/1.4.1.RELEASE/spring-boot-1.4.1.RELEASE.jar (642 KB at 29.2 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-autoconfigure/1.4.1.RELEASE/spring-boot-autoconfigure-1.4.1.RELEASE.jar (946 KB at 37.0 KB/sec)
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/***/demo/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41.975 s
[INFO] Finished at: 2016-10-30T18:27:22+08:00
[INFO] Final Memory: 23M/156M
[INFO] ------------------------------------------------------------------------

4.2 mvn clean 清理项目,清除编译的内容,会删除target目录

$ mvn clean
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ demo ---
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar (165 KB at 30.0 KB/sec)
[INFO] Deleting /Users/***/demo/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.096 s
[INFO] Finished at: 2016-10-30T18:29:18+08:00
[INFO] Final Memory: 12M/241M
[INFO] ------------------------------------------------------------------------

4.3 mvn package 将项目打包

$ mvn package
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test-autoconfigure/1.4.1.RELEASE/spring-boot-test-autoconfigure-1.4.1.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test/1.4.1.RELEASE/spring-boot-test-1.4.1.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-test/1.4.1.RELEASE/spring-boot-starter-test-1.4.1.RELEASE.jar
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test/1.4.1.RELEASE/spring-boot-test-1.4.1.RELEASE.jar (146 KB at 24.9 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-test-autoconfigure/1.4.1.RELEASE/spring-boot-test-autoconfigure-1.4.1.RELEASE.jar (109 KB at 17.1 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-test/1.4.1.RELEASE/spring-boot-starter-test-1.4.1.RELEASE.jar (3 KB at 0.3 KB/sec)
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/***/demo/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/***/demo/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ demo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/***/demo/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ demo ---
[INFO] Surefire report directory: /Users/***/demo/target/surefire-reports
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit4/2.18.1/surefire-junit4-2.18.1.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit4/2.18.1/surefire-junit4-2.18.1.pom (3 KB at 0.5 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-providers/2.18.1/surefire-providers-2.18.1.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-providers/2.18.1/surefire-providers-2.18.1.pom (3 KB at 1.4 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit4/2.18.1/surefire-junit4-2.18.1.jar
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit4/2.18.1/surefire-junit4-2.18.1.jar (67 KB at 1.7 KB/sec)

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
18:33:53.665 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.DemoApplicationTests]
18:33:53.672 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.Defau***acheAwareContextLoaderDelegate]
18:33:53.684 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
18:33:53.699 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.DemoApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
18:33:53.713 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.DemoApplicationTests], using SpringBootContextLoader
18:33:53.717 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTests-context.xml] does not exist
18:33:53.717 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTestsContext.groovy] does not exist
18:33:53.717 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.DemoApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
18:33:53.718 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.DemoApplicationTests]: DemoApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
18:33:53.750 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.DemoApplicationTests]
18:33:53.797 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
18:33:53.798 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
18:33:53.798 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
18:33:53.807 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved classpath location [com/example/] to resources [URL [file:/Users/***/demo/target/test-classes/com/example/], URL [file:/Users/***/demo/target/classes/com/example/]]
18:33:53.808 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [/Users/***/demo/target/test-classes/com/example]
18:33:53.808 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [/Users/***/demo/target/test-classes/com/example] for files matching pattern [/Users/***/demo/target/test-classes/com/example/*.class]
18:33:53.810 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [/Users/***/demo/target/classes/com/example]
18:33:53.810 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [/Users/***/demo/target/classes/com/example] for files matching pattern [/Users/***/demo/target/classes/com/example/*.class]
18:33:53.811 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved location pattern [classpath*:com/example/*.class] to resources [file [/Users/***/demo/target/test-classes/com/example/DemoApplicationTests.class], file [/Users/***/demo/target/classes/com/example/DemoApplication.class]]
18:33:53.859 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/***/demo/target/classes/com/example/DemoApplication.class]
18:33:53.861 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.DemoApplication for test class com.example.DemoApplicationTests
18:33:53.865 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.DemoApplicationTests]: using defaults.
18:33:53.868 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
18:33:53.876 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
18:33:53.876 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
18:33:53.881 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@4d49af10, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@279ad2e3, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@58134517, org.springframework.test.context.support.DirtiesContextTestExecutionListener@4450d156, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@4461c7e3, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@351d0846, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@77e4c80f, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@35fc6dc4, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@7fe8ea47, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@226a82c4]
18:33:53.883 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:33:53.883 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
Running com.example.DemoApplicationTests
18:33:53.885 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.DemoApplicationTests]
18:33:53.885 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.Defau***acheAwareContextLoaderDelegate]
18:33:53.885 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
18:33:53.886 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.DemoApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
18:33:53.886 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.DemoApplicationTests], using SpringBootContextLoader
18:33:53.887 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTests-context.xml] does not exist
18:33:53.887 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTestsContext.groovy] does not exist
18:33:53.887 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.DemoApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
18:33:53.887 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.DemoApplicationTests]: DemoApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
18:33:53.892 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.DemoApplicationTests]
18:33:53.892 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
18:33:53.893 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
18:33:53.893 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
18:33:53.893 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.DemoApplication for test class com.example.DemoApplicationTests
18:33:53.895 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.DemoApplicationTests]: using defaults.
18:33:53.897 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
18:33:53.900 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
18:33:53.901 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
18:33:53.901 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@105fece7, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@3ec300f1, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@482cd91f, org.springframework.test.context.support.DirtiesContextTestExecutionListener@123f1134, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@7d68ef40, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@5b0abc94, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@75c072cb, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@1f1c7bf6, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@25b485ba, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@2b546384]
18:33:53.902 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:33:53.902 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
18:33:53.902 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:33:53.903 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
18:33:53.907 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@16aa0a0a testClass = DemoApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@780cb77 testClass = DemoApplicationTests, locations = '{}', classes = '{class com.example.DemoApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@31610302, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@a67c67e, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@3a5ed7a6], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]], class annotated with @DirtiesContext [false] with mode [null].
18:33:53.907 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:33:53.907 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
18:33:53.929 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
18:33:53.929 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
18:33:53.929 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
18:33:53.930 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=-1}
18:33:53.930 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [Inlined Test Properties] PropertySource with highest search precedence

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.1.RELEASE)

2016-10-30 18:33:54.710  INFO 81693 --- [           main] com.example.DemoApplicationTests         : Starting DemoApplicationTests on ***.lan with PID 81693 (started by *** in /Users/***/demo)
2016-10-30 18:33:54.712  INFO 81693 --- [           main] com.example.DemoApplicationTests         : No active profile set, falling back to default profiles: default
2016-10-30 18:33:54.750  INFO 81693 --- [           main] o.s.w.c.s.GenericWebApplicationContext   : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 18:33:54 CST 2016]; root of context hierarchy
2016-10-30 18:33:55.986  INFO 81693 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 18:33:54 CST 2016]; root of context hierarchy
2016-10-30 18:33:56.044  INFO 81693 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-10-30 18:33:56.045  INFO 81693 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-10-30 18:33:56.068  INFO 81693 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 18:33:56.068  INFO 81693 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 18:33:56.094  INFO 81693 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 18:33:56.202  INFO 81693 --- [           main] com.example.DemoApplicationTests         : Started DemoApplicationTests in 2.261 seconds (JVM running for 2.837)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.338 sec - in com.example.DemoApplicationTests
2016-10-30 18:33:56.225  INFO 81693 --- [       Thread-1] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 18:33:54 CST 2016]; root of context hierarchy

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ demo ---
[INFO] Building jar: /Users/***/demo/target/demo-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.4.1.RELEASE:repackage (default) @ demo ---
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-loader-tools/1.4.1.RELEASE/spring-boot-loader-tools-1.4.1.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-loader-tools/1.4.1.RELEASE/spring-boot-loader-tools-1.4.1.RELEASE.pom (5 KB at 4.4 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-loader-tools/1.4.1.RELEASE/spring-boot-loader-tools-1.4.1.RELEASE.jar
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-loader-tools/1.4.1.RELEASE/spring-boot-loader-tools-1.4.1.RELEASE.jar (140 KB at 9.3 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:17 min
[INFO] Finished at: 2016-10-30T18:34:12+08:00
[INFO] Final Memory: 31M/246M
[INFO] ------------------------------------------------------------------------

4.4 mvn test 运行测试

$ mvn test
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/***/demo/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ demo ---
[INFO] Surefire report directory: /Users/***/demo/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
18:36:09.992 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.DemoApplicationTests]
18:36:09.998 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.Defau***acheAwareContextLoaderDelegate]
18:36:10.009 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
18:36:10.023 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.DemoApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
18:36:10.033 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.DemoApplicationTests], using SpringBootContextLoader
18:36:10.036 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTests-context.xml] does not exist
18:36:10.036 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTestsContext.groovy] does not exist
18:36:10.036 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.DemoApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
18:36:10.037 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.DemoApplicationTests]: DemoApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
18:36:10.068 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.DemoApplicationTests]
18:36:10.107 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
18:36:10.107 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
18:36:10.108 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
18:36:10.115 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved classpath location [com/example/] to resources [URL [file:/Users/***/demo/target/test-classes/com/example/], URL [file:/Users/***/demo/target/classes/com/example/]]
18:36:10.116 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [/Users/***/demo/target/test-classes/com/example]
18:36:10.116 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [/Users/***/demo/target/test-classes/com/example] for files matching pattern [/Users/***/demo/target/test-classes/com/example/*.class]
18:36:10.118 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [/Users/***/demo/target/classes/com/example]
18:36:10.118 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [/Users/***/demo/target/classes/com/example] for files matching pattern [/Users/***/demo/target/classes/com/example/*.class]
18:36:10.119 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved location pattern [classpath*:com/example/*.class] to resources [file [/Users/***/demo/target/test-classes/com/example/DemoApplicationTests.class], file [/Users/***/demo/target/classes/com/example/DemoApplication.class]]
18:36:10.165 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/***/demo/target/classes/com/example/DemoApplication.class]
18:36:10.168 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.DemoApplication for test class com.example.DemoApplicationTests
18:36:10.172 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.DemoApplicationTests]: using defaults.
18:36:10.175 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
18:36:10.184 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
18:36:10.185 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
18:36:10.191 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@4d49af10, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@279ad2e3, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@58134517, org.springframework.test.context.support.DirtiesContextTestExecutionListener@4450d156, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@4461c7e3, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@351d0846, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@77e4c80f, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@35fc6dc4, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@7fe8ea47, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@226a82c4]
18:36:10.195 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:36:10.196 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
Running com.example.DemoApplicationTests
18:36:10.199 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.DemoApplicationTests]
18:36:10.199 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.Defau***acheAwareContextLoaderDelegate]
18:36:10.199 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
18:36:10.199 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.DemoApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
18:36:10.200 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.DemoApplicationTests], using SpringBootContextLoader
18:36:10.201 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTests-context.xml] does not exist
18:36:10.201 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTestsContext.groovy] does not exist
18:36:10.201 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.DemoApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
18:36:10.201 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.DemoApplicationTests]: DemoApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
18:36:10.207 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.DemoApplicationTests]
18:36:10.209 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
18:36:10.209 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
18:36:10.209 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
18:36:10.209 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.DemoApplication for test class com.example.DemoApplicationTests
18:36:10.212 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.DemoApplicationTests]: using defaults.
18:36:10.215 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
18:36:10.218 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
18:36:10.218 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
18:36:10.219 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@105fece7, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@3ec300f1, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@482cd91f, org.springframework.test.context.support.DirtiesContextTestExecutionListener@123f1134, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@7d68ef40, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@5b0abc94, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@75c072cb, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@1f1c7bf6, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@25b485ba, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@2b546384]
18:36:10.219 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:36:10.219 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
18:36:10.220 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:36:10.221 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
18:36:10.226 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@16aa0a0a testClass = DemoApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@780cb77 testClass = DemoApplicationTests, locations = '{}', classes = '{class com.example.DemoApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@31610302, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@a67c67e, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@3a5ed7a6], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]], class annotated with @DirtiesContext [false] with mode [null].
18:36:10.226 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
18:36:10.226 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
18:36:10.254 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
18:36:10.254 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
18:36:10.254 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
18:36:10.255 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=-1}
18:36:10.255 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [Inlined Test Properties] PropertySource with highest search precedence

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.1.RELEASE)

2016-10-30 18:36:10.601  INFO 81708 --- [           main] com.example.DemoApplicationTests         : Starting DemoApplicationTests on ***.lan with PID 81708 (started by *** in /Users/***/demo)
2016-10-30 18:36:10.602  INFO 81708 --- [           main] com.example.DemoApplicationTests         : No active profile set, falling back to default profiles: default
2016-10-30 18:36:10.663  INFO 81708 --- [           main] o.s.w.c.s.GenericWebApplicationContext   : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 18:36:10 CST 2016]; root of context hierarchy
2016-10-30 18:36:11.821  INFO 81708 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 18:36:10 CST 2016]; root of context hierarchy
2016-10-30 18:36:11.876  INFO 81708 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-10-30 18:36:11.877  INFO 81708 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-10-30 18:36:11.900  INFO 81708 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 18:36:11.900  INFO 81708 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 18:36:11.938  INFO 81708 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 18:36:12.056  INFO 81708 --- [           main] com.example.DemoApplicationTests         : Started DemoApplicationTests in 1.792 seconds (JVM running for 2.334)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.875 sec - in com.example.DemoApplicationTests
2016-10-30 18:36:12.075  INFO 81708 --- [       Thread-1] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 18:36:10 CST 2016]; root of context hierarchy

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.392 s
[INFO] Finished at: 2016-10-30T18:36:12+08:00
[INFO] Final Memory: 17M/309M
[INFO] ------------------------------------------------------------------------

4.5 mvn test-compile 编译测试文件

$ mvn test-compile
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/***/demo/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.735 s
[INFO] Finished at: 2016-10-30T18:41:12+08:00
[INFO] Final Memory: 15M/309M
[INFO] ------------------------------------------------------------------------

4.6 mvn eclipse:eclipse 生成eclipse项目,mvn idea:idea 生成IntelliJ IDEA项目

$ mvn eclipse:eclipse
[INFO] Scanning for projects...
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.8/maven-antrun-plugin-1.8.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.8/maven-antrun-plugin-1.8.pom (4 KB at 1.3 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.8/maven-antrun-plugin-1.8.jar
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.8/maven-antrun-plugin-1.8.jar (36 KB at 28.3 KB/sec)
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-eclipse-plugin:2.10:eclipse (default-cli) > generate-resources @ demo >>>
[INFO] 
[INFO] <<< maven-eclipse-plugin:2.10:eclipse (default-cli) < generate-resources @ demo <<<
[INFO] 
[INFO] --- maven-eclipse-plugin:2.10:eclipse (default-cli) @ demo ---
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/2.1/wagon-provider-api-2.1.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/2.1/wagon-provider-api-2.1.pom (2 KB at 2.2 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/2.1/wagon-2.1.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/2.1/wagon-2.1.pom (16 KB at 18.9 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.6.3/plexus-archiver-2.6.3.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.6.3/plexus-archiver-2.6.3.pom (4 KB at 4.2 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.18/plexus-utils-3.0.18.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.18/plexus-utils-3.0.18.pom (4 KB at 4.5 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.1.3/plexus-io-2.1.3.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.1.3/plexus-io-2.1.3.pom (3 KB at 1.7 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.pom (12 KB at 13.7 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-jline/1.0-alpha-5/plexus-interactivity-jline-1.0-alpha-5.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-jline/1.0-alpha-5/plexus-interactivity-jline-1.0-alpha-5.pom (772 B at 0.9 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity/1.0-alpha-5/plexus-interactivity-1.0-alpha-5.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity/1.0-alpha-5/plexus-interactivity-1.0-alpha-5.pom (482 B at 0.7 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.4/plexus-components-1.1.4.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.4/plexus-components-1.1.4.pom (3 KB at 2.4 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/jline/jline/0.9.1/jline-0.9.1.pom
Downloaded: https://repo.maven.apache.org/maven2/jline/jline/0.9.1/jline-0.9.1.pom (145 B at 0.2 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-5/plexus-interactivity-api-1.0-alpha-5.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-5/plexus-interactivity-api-1.0-alpha-5.pom (430 B at 0.6 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-resources/1.0-alpha-7/plexus-resources-1.0-alpha-7.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-resources/1.0-alpha-7/plexus-resources-1.0-alpha-7.pom (2 KB at 2.0 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom (0 B at 0.0 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/biz/aQute/bndlib/0.0.145/bndlib-0.0.145.pom
Downloaded: https://repo.maven.apache.org/maven2/biz/aQute/bndlib/0.0.145/bndlib-0.0.145.pom (0 B at 0.0 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-osgi/0.2.0/maven-osgi-0.2.0.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-osgi/0.2.0/maven-osgi-0.2.0.pom (2 KB at 2.4 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/biz/aQute/bndlib/0.0.203/bndlib-0.0.203.pom
Downloaded: https://repo.maven.apache.org/maven2/biz/aQute/bndlib/0.0.203/bndlib-0.0.203.pom (886 B at 1.1 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/eclipse/core/resources/3.3.0-v20070604/resources-3.3.0-v20070604.pom
Downloaded: https://repo.maven.apache.org/maven2/org/eclipse/core/resources/3.3.0-v20070604/resources-3.3.0-v20070604.pom (2 KB at 1.3 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/2.1/wagon-provider-api-2.1.jar
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.6.3/plexus-archiver-2.6.3.jar
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.1.3/plexus-io-2.1.3.jar
Downloading: https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-jline/1.0-alpha-5/plexus-interactivity-jline-1.0-alpha-5.jar
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-jline/1.0-alpha-5/plexus-interactivity-jline-1.0-alpha-5.jar (6 KB at 2.8 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/jline/jline/0.9.1/jline-0.9.1.jar
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-io/2.1.3/plexus-io-2.1.3.jar (65 KB at 17.0 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-resources/1.0-alpha-7/plexus-resources-1.0-alpha-7.jar
Downloaded: https://repo.maven.apache.org/maven2/jline/jline/0.9.1/jline-0.9.1.jar (46 KB at 10.8 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.6.3/plexus-archiver-2.6.3.jar (129 KB at 30.7 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/biz/aQute/bndlib/0.0.145/bndlib-0.0.145.jar
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-osgi/0.2.0/maven-osgi-0.2.0.jar
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-osgi/0.2.0/maven-osgi-0.2.0.jar (13 KB at 2.1 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/eclipse/core/resources/3.3.0-v20070604/resources-3.3.0-v20070604.jar
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-resources/1.0-alpha-7/plexus-resources-1.0-alpha-7.jar (23 KB at 3.5 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/2.1/wagon-provider-api-2.1.jar (51 KB at 7.2 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/biz/aQute/bndlib/0.0.145/bndlib-0.0.145.jar (112 KB at 13.4 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar (357 KB at 24.9 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/eclipse/core/resources/3.3.0-v20070604/resources-3.3.0-v20070604.jar (663 KB at 25.1 KB/sec)
[INFO] Using Eclipse Workspace: /Users/***
[INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER
[INFO] Resource directory's path matches an existing source directory but "test", "filtering" or "output" were different.The resulting eclipse configuration may not accurately reflect the project configuration for src/main/resources
[INFO] Not writing settings - defaults suffice
[INFO] Wrote Eclipse project for "demo" to /Users/***/demo.
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 45.142 s
[INFO] Finished at: 2016-10-30T18:43:55+08:00
[INFO] Final Memory: 20M/328M
[INFO] ------------------------------------------------------------------------

4.6 mvn eclipse:clean 清理eclipse项目的一些设置

$ mvn eclipse:clean
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-eclipse-plugin:2.10:clean (default-cli) @ demo ---
[INFO] Deleting file: .project
[INFO] Deleting file: .classpath
[INFO] Deleting file: .wtpmodules
[INFO] Deleting file: .settings
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.788 s
[INFO] Finished at: 2016-10-30T19:07:36+08:00
[INFO] Final Memory: 16M/309M
[INFO] ------------------------------------------------------------------------

4.7 mvn site 为项目创建站点

由于下载内容太多,没等它完成,我取消了,所以这里就没例子了。

4.8 mvn jar:jar 只打jar包

$ mvn jar:jar
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-jar-plugin:2.6:jar (default-cli) @ demo ---
[INFO] Building jar: /Users/***/demo/target/demo-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.792 s
[INFO] Finished at: 2016-10-30T19:25:06+08:00
[INFO] Final Memory: 16M/309M
[INFO] ------------------------------------------------------------------------

4.8 mvn install 将项目生成的jar包放到本地仓库

$ mvn install

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/***/demo/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ demo ---
[INFO] Surefire report directory: /Users/***/demo/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
19:39:35.508 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.DemoApplicationTests]
19:39:35.515 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.Defau***acheAwareContextLoaderDelegate]
19:39:35.524 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
19:39:35.539 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.DemoApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
19:39:35.552 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.DemoApplicationTests], using SpringBootContextLoader
19:39:35.556 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTests-context.xml] does not exist
19:39:35.557 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTestsContext.groovy] does not exist
19:39:35.557 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.DemoApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
19:39:35.558 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.DemoApplicationTests]: DemoApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
19:39:35.596 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.DemoApplicationTests]
19:39:35.649 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
19:39:35.650 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
19:39:35.650 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
19:39:35.662 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved classpath location [com/example/] to resources [URL [file:/Users/***/demo/target/test-classes/com/example/], URL [file:/Users/***/demo/target/classes/com/example/]]
19:39:35.662 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [/Users/***/demo/target/test-classes/com/example]
19:39:35.662 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [/Users/***/demo/target/test-classes/com/example] for files matching pattern [/Users/***/demo/target/test-classes/com/example/*.class]
19:39:35.666 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [/Users/***/demo/target/classes/com/example]
19:39:35.666 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [/Users/***/demo/target/classes/com/example] for files matching pattern [/Users/***/demo/target/classes/com/example/*.class]
19:39:35.667 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved location pattern [classpath*:com/example/*.class] to resources [file [/Users/***/demo/target/test-classes/com/example/DemoApplicationTests.class], file [/Users/***/demo/target/classes/com/example/DemoApplication.class]]
19:39:35.722 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/***/demo/target/classes/com/example/DemoApplication.class]
19:39:35.723 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.DemoApplication for test class com.example.DemoApplicationTests
19:39:35.727 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.DemoApplicationTests]: using defaults.
19:39:35.731 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
19:39:35.741 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
19:39:35.741 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
19:39:35.746 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@4d49af10, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@279ad2e3, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@58134517, org.springframework.test.context.support.DirtiesContextTestExecutionListener@4450d156, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@4461c7e3, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@351d0846, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@77e4c80f, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@35fc6dc4, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@7fe8ea47, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@226a82c4]
19:39:35.749 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
19:39:35.749 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
Running com.example.DemoApplicationTests
19:39:35.751 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.DemoApplicationTests]
19:39:35.751 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.Defau***acheAwareContextLoaderDelegate]
19:39:35.751 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
19:39:35.752 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.DemoApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
19:39:35.752 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.DemoApplicationTests], using SpringBootContextLoader
19:39:35.753 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTests-context.xml] does not exist
19:39:35.753 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.DemoApplicationTests]: class path resource [com/example/DemoApplicationTestsContext.groovy] does not exist
19:39:35.753 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.DemoApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
19:39:35.754 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.DemoApplicationTests]: DemoApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
19:39:35.760 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.DemoApplicationTests]
19:39:35.761 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
19:39:35.761 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
19:39:35.761 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
19:39:35.762 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.DemoApplication for test class com.example.DemoApplicationTests
19:39:35.764 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.DemoApplicationTests]: using defaults.
19:39:35.767 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
19:39:35.770 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
19:39:35.770 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Could not instantiate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
19:39:35.770 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@105fece7, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@3ec300f1, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@482cd91f, org.springframework.test.context.support.DirtiesContextTestExecutionListener@123f1134, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@7d68ef40, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@5b0abc94, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@75c072cb, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@1f1c7bf6, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@25b485ba, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@2b546384]
19:39:35.771 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
19:39:35.771 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
19:39:35.772 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
19:39:35.772 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
19:39:35.777 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@16aa0a0a testClass = DemoApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@780cb77 testClass = DemoApplicationTests, locations = '{}', classes = '{class com.example.DemoApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@31610302, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@a67c67e, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@3a5ed7a6], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]], class annotated with @DirtiesContext [false] with mode [null].
19:39:35.778 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.DemoApplicationTests]
19:39:35.778 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.DemoApplicationTests]
19:39:35.807 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
19:39:35.807 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
19:39:35.807 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
19:39:35.808 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=-1}
19:39:35.809 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [Inlined Test Properties] PropertySource with highest search precedence

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.1.RELEASE)

2016-10-30 19:39:36.207  INFO 82013 --- [           main] com.example.DemoApplicationTests         : Starting DemoApplicationTests on ***.lan with PID 82013 (started by *** in /Users/***/demo)
2016-10-30 19:39:36.207  INFO 82013 --- [           main] com.example.DemoApplicationTests         : No active profile set, falling back to default profiles: default
2016-10-30 19:39:36.242  INFO 82013 --- [           main] o.s.w.c.s.GenericWebApplicationContext   : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 19:39:36 CST 2016]; root of context hierarchy
2016-10-30 19:39:37.382  INFO 82013 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 19:39:36 CST 2016]; root of context hierarchy
2016-10-30 19:39:37.443  INFO 82013 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-10-30 19:39:37.444  INFO 82013 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-10-30 19:39:37.467  INFO 82013 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 19:39:37.467  INFO 82013 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 19:39:37.505  INFO 82013 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-30 19:39:37.623  INFO 82013 --- [           main] com.example.DemoApplicationTests         : Started DemoApplicationTests in 1.803 seconds (JVM running for 2.437)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.892 sec - in com.example.DemoApplicationTests
2016-10-30 19:39:37.644  INFO 82013 --- [       Thread-1] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@15043a2f: startup date [Sun Oct 30 19:39:36 CST 2016]; root of context hierarchy

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ demo ---
[INFO] Building jar: /Users/***/demo/target/demo-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.4.1.RELEASE:repackage (default) @ demo ---
[INFO] 
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ demo ---
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.pom (4 KB at 1.7 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar
Downloading: https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.jar
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar
Downloaded: https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar (0 B at 0.0 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar (37 KB at 25.3 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.jar (152 KB at 40.2 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar (234 KB at 35.3 KB/sec)
[INFO] Installing /Users/***/demo/target/demo-0.0.1-SNAPSHOT.jar to /Users/***/.m2/repository/com/example/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/***/demo/pom.xml to /Users/***/.m2/repository/com/example/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.550 s
[INFO] Finished at: 2016-10-30T19:39:47+08:00
[INFO] Final Memory: 24M/257M
[INFO] ------------------------------------------------------------------------

5. Maven settings.xml

settings.xml是Maven最重要的配置文件,它通常位于两个位置:

  • Maven安装的主目录: $MAVEN_HOME/conf/settings.xml

  • 用户主目录: $USER_HOME/.m2/settings.xml

第一个setting.xml称为全局配置文件,第二个称为用户配置。如果两个文件同时存在,它们的内容将会合并,用户配置将会覆盖全局配置。

下面的内容翻译自Maven安装时的settings.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
 
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <!--设置本地仓库存储路径。默认路径为${user.home}/.m2/repository。 -->
  <localRepository>${user.home}/.m2/repository</localRepository>
 
  <!--设置用户输入时是Maven是否进行交互。如果设置为false,对于问题的参数Maven会使用一个合理的默认值,也可能是基于其它设置的。默认值为true。-->
  <interactiveMode>true</interactiveMode>
 
  <!--设置Maven执行build时是否连接网络。这会影响工件的下载,部署和其它。默认值为false(联网)。 -->
  <offline>false</offline>
 
  <!-- 
    这是一个组标识符列表,当通过插件的前缀解析插件时会搜索这个列表,例如,调用命令行"mvn prefix:goal"时。如果没有包含在这个列表里,Maven会自动的添加组标识符"org.apache.maven.plugins" 和"org.codehaus.mojo"。 这个元素包括一系列的pluginGroup元素,每一个子元素都包含一个groupId。当一个插件被使用,并且没有在命令行上提供的时候,插件组列表就会被查找。
  -->
  <pluginGroups>
    <!-- 指定插件查找的组标识符 -->
    <pluginGroup>com.your.plugins</pluginGroup>
  </pluginGroups>
 
  <!-- 设置本机连接网络的代理服务器列表。除非另外规定(系统属性或命令行转换),否则将激活并使用列表中的第一个代理。-->
  <proxies>
    <!-- 配置代理服务器的相关参数 -->
    <!-- 协议://主机名:端口 -->
    <!-- 用户名-密码 -->
    <proxy>
      <!-- 代理标识符,用来区分代理。 -->
      <id>optional</id>
      <!-- 指定是否激活 -->
      <active>true</active>
      <!-- 指定代理协议 -->
      <protocol>http</protocol>
      <!-- 指定代理认证的用户名 -->
      <username>username</username>
      <!-- 指定代理认证的密码 -->
      <password>pwd</password>
      <!-- 指定代理服务器的主机名 -->
      <host>proxy.host.net</host>
      <!-- 指定代理服务的端口 -->
      <port>80</port>
      <!-- 指定不被代理的主机名列表。多个用|分隔。-->
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
  </proxies>
 
  <!-- 
    当连接一个特定的服务器时,指定要使用的认证信息,在系统内部通过唯一的名字来标识(引用下面的id属性),你该指定username/password或privateKey/passphrase,它们是成对使用的。
  -->
  <servers>
    <!-- 例子一 用户名/密码-->
    <server>
      <!-- server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。-->
      <id>deploymentRepo</id>
      <!-- 服务器认证的用户名 -->
      <username>repouser</username>
      <!-- 服务器认证的用户对应的密码 -->
      <password>repopwd</password>
    </server>
 
    <!-- 例子二 私钥/密码 -->
    <server>
      <id>siteServer</id>
      <!-- 认证用的私钥文件 -->
      <privateKey>/path/to/private/key<</privateKey>
      <!-- 认证用的私钥密码,没有密码就为空 -->
      <passphrase>optional;leave empty if not used.</passphrase>
    </server>
  </servers>
 
  <!-- 
    这是用来从远端仓库下载artifact的镜像列表。它的机制类似于这一:POM文件可能在解析特定的artifacts时会声明一个仓库。但这个仓库可能有时会有拥堵问题,因此必须在其它的几个地方放置几个它的镜像。 仓库定义会有唯一的id,因此我们可以为仓库创建一个镜像引用,用来作为一个可替代的下载地址。镜像站点将首选服务器的仓库
  -->
  <mirrors>
    <!-- 
      指定要使用的仓库镜像站点来代替给定的仓库,镜像服务仓库有一个ID来对应镜像的mirrorOf元素。ID是用来继承和查找用的,在整个镜像集合中必须是唯一的。 
    -->
    <mirror>
      <!--镜像的唯一标识符,用来区分不同的mirror元素。 -->
      <id>mirrorId</id>
      <!--被镜像的服务器的id,比如:central,不能和id匹配。-->
      <mirrorOf>repositoryId</mirrorOf>
      <!-- 镜像名称 -->
      <name>Human Readable Name for this Mirror</name>
       <!--镜像的URL。构建系统会优先使用该URL,而不是默认的服务器URL。 -->
      <url>http://my.repository.com/repo/path</url>
    </mirror>
  </mirrors>
 
  <!-- 
      这是一个可以用许多方式激活的配置文件列表,在这里可以修改构建过程。settings.xml中提供的配置信息是用来提供本地特定机器路径和仓库位置的,
      这允许在本地环境中进行构建工作。例如,你有一个集成测试插件,假设为cactus,它需要知道Tomcat的安装地址,你可以在这提供一个变量,在构建过程中配置cactus插件时这个变量可以被间接引用。正如上面所提到的,可以通过许多方式来激活配置文件,一种方式是通过文档中(settings.xml)中的activeProfiles部分来激活,后面会进行讨论。另一种方式本质上是依赖系统属性的检测,通过匹配属性中的一个特定值或检测其是否存在。配置文件也可以通过JDK版本前缀激活,当在JDK 1.4.2_07版本上执行构建时,值1.4可以激活一个配置文件。最后,配置文件列表可以直接在命令行中指定。
      注意:对于在settings.xml文件中定义的配置文件,你只能指定工件仓库,插件仓库,自由形式的属性作为POM文件中插件配置的变量。
  -->
  <profiles>
    <!-- 
        指定构建过程的一系列介绍,通过上面描述的一种或多种机制来激活。对于继承,可以通过<activatedProfiles/>或命令行来激活配置文件,配置文件必须有一个唯一的ID。
        配置文件识别的最佳实践是在配置文件中使用一致的命名约定。例如'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett'等等。这样可以更直观的理解引入的配置文件要实现什么,尤其是在调试时只有一系列配置文件的id的情况下。
        这个配置文件例子使用JDK版本来触发激活,并提供JDK特定的仓库。
    -->
    <profile>

      <id>jdk-1.4</id>

      <activation>
        <jdk>1.4</jdk>
      </activation>

      <repositories>
        <repository>
          <id>jdk14</id>
          <name>Repository for JDK 1.4 builds</name>
          <url>http://www.myhost.com/maven/jdk14</url>
          <layout>default</layout>
          <snapshotPolicy>always</snapshotPolicy>
        </repository>
      </repositories>
    </profile>
 
    <profile>
      <!-- 配置文件的唯一标识 -->
      <id>test</id>
      <!-- 远程仓库列表 -->
      <repositories>
        <!-- 远程仓库的配置信息 -->
        <repository>
          <!-- 远程仓库唯一标识-->
          <id>maven</id>
          <!-- 远程仓库名称 -->
          <name>maven for practice</name>
          <!-- 远程仓库URL -->
          <url>http://127.0.0.1/test</url>
          <layout>default</layout>
          <releases>
            <!--是否使用这个资源库下载这种类型的构件 默认值:true-->
            <enabled>true</enabled>
            <!--指定下载更新的频率。值为:always,daily(默认),interval:X(X指分钟),never。 -->
            <updatePolicy>never</updatePolicy>
            <!--当Maven验证构件校验文件失败时该做什么fail或warn。-->
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <!--是否使用这个资源库下载-SNAPSHOT工件,默认为true-->
            <enabled>true</enabled>
            <!--指定下载更新的频率。这里的选项是:always,daily(默认),interval:X(X指分钟),never。 -->
            <updatePolicy>daily</updatePolicy>
            <!--当Maven验证构件校验文件失败时该怎么做fail或warn。-->
            <checksumPolicy>warn</checksumPolicy>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>maven</id>
          <name>maven test</name>
          <url>http://127.0.0.1/</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
 
  </profiles>
 
  <!-- 指定所有构建都激活的配置文件列表-->
  <activeProfiles>
    <activeProfile>repo-dev</activeProfile>
  </activeProfiles>
</settings>

6. Maven 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/maven-v4_0_0.xsd ">  
    <!--父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。坐标包括groupId,artifactId和version。-->
  <parent> 
    <!--被继承的父项目的构件标识符-->
    <artifactId>artifactId</artifactId>
    <!--被继承的父项目的全球唯一标识符-->
    <groupId>groupId</groupId> 
    <!--被继承的父项目的版本-->
    <version>version</version> 
    <!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。-->
    <relativePath>/path</relativePath> 
  </parent> 
  <!--声明项目描述符遵循哪一个POM模型版本。虽然模型本身的版本很少改变,但它仍distributionManagement然是必不可少的,这是为了当Maven引入了新特性或者其他模型变更时,确保稳定性。-->    
  <modelVersion>4.0.0</modelVersion>  
  <!--项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时路径也由此生成, com.tyan.practice生成的相对路径为:/com/tyan/practice-->  
  <groupId>com.tyan.practice</groupId>   
  <!--构件的标识符,它和groupId一起标识一个唯一构件。在groupId确定的情况下,artifactId也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源码,二进制发布和WARs等。-->  
  <artifactId>test</artifactId>   
  <!--项目产生的构件类型(打包类型),例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型。通常项目是打成war包或jar包-->  
  <packaging>jar</packaging>   
  <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号,测试用的是SNAPSHOT(不稳定),真正发布的版本(Release)是不带SNAPSHOT的-->  
  <version>1.0.0-SNAPSHOT</version>  
  <!--项目的名称, Maven产生的文档用-->  
  <name>maven</name>  
  <!--项目主页的URL,Maven产生的文档用-->  
  <url>http://www.github.com/tyan</url>  
  <!--项目的详细描述,Maven 产生的文档用。当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签), 不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。-->  
  <description>Maven Practice.</description>   
  <!--描述这个项目构建的前提条件。-->
  <prerequisites> 
  <!--构建该项目或使用该插件所需要的Maven的最低版本-->
    <maven></maven>
  </prerequisites> 
  <!--项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL-->  
  <issueManagement> 
    <!--问题管理系统的名字-->  
    <system>JIRA</system>  
    <!--问题管理系统的URL-->
    <url>https://www.atlassian.com/software/jira/</url>  
  </issueManagement>  
  <!--项目持续集成信息-->
  <ciManagement> 
    <!--持续集成系统的名字-->
    <system>continue</system> 
    <!--该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话)。-->
    <url></url> 
    <!--构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告)-->
    <notifiers> 
      <!--配置一种方式,当构建中断时,以该方式通知用户/开发者-->
      <notifier> 
        <!--传送通知的途径-->
        <type></type> 
        <!--发生错误时是否通知-->
        <sendOnError></sendOnError> 
        <!--构建失败时是否通知-->
        <sendOnFailure></sendOnFailure> 
        <!--构建成功时是否通知-->
        <sendOnSuccess></sendOnSuccess> 
        <!--发生警告时是否通知-->
        <sendOnWarning></sendOnWarning> 
        <!--不赞成使用。通知发送到哪里-->
        <address></address> 
        <!--扩展配置项-->
        <configuration></configuration>
      </notifier>
    </notifiers>
  </ciManagement> 
  <!--项目创建年份,4位数字。当产生版权信息时需要使用这个值。-->
  <inceptionYear></inceptionYear> 
  <!--项目相关邮件列表信息-->  
  <mailingLists> 
    <!--该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。-->  
    <mailingList>  
      <!--邮件的名称-->
      <name>Demo</name>   
      <!--发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建-->  
      <post>banseon@126.com</post>  
      <!--订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建-->  
      <subscribe>banseon@126.com</subscribe>   
      <!--取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建-->  
      <unsubscribe>banseon@126.com</unsubscribe>  
      <!--你可以浏览邮件信息的URL-->
      <archive>http:/hi.baidu.com/banseon/demo/dev/</archive>  
    </mailingList>  
  </mailingLists>  
  <!--项目开发者列表-->  
  <developers>  
    <!--某个项目开发者的信息-->
    <developer>  
      <!--SCM里项目开发者的唯一标识符-->
      <id>Maven Learning</id>   
      <!--项目开发者的全名-->
      <name>tyan</name>  
      <!--项目开发者的email-->
      <email>tyan.liu@gmail.com</email>  
      <!--项目开发者的主页的URL-->
      <url/> 
      <!--项目开发者在项目中扮演的角色,角色元素描述了各种角色-->
      <roles>  
        <role>Project Manager</role>  
        <role>Deployer</role>  
      </roles> 
      <!--项目开发者所属组织--> 
      <organization>Maven</organization>  
      <!--项目开发者所属组织的URL-->
      <organizationUrl>http://maven.apache.org/</organizationUrl>  
      <!--项目开发者属性,如即时消息如何处理等-->
      <properties>  
        <dept>No</dept>  
      </properties> 
      <!--项目开发者所在时区, -11到12范围内的整数。--> 
      <timezone>+8</timezone>  
    </developer>  
  </developers>  
  <!--项目的其他贡献者列表-->
  <contributors>
    <!--项目的其他贡献者。参见developers/developer元素-->
    <contributor>
      <name></name>
      <email></email>
      <url></url>
      <organization></organization>
      <organizationUrl></organizationUrl>
      <roles></roles>
      <timezone></timezone>
      <properties></properties>
    </contributor>     
  </contributors>    
  <!--该元素描述了项目所有License列表。应该只列出该项目的license列表,不要列出依赖项目的license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license。-->  
  <licenses> 
  <!--描述了项目的license,用于生成项目的web站点的license页面,其他一些报表和validation也会用到该元素。-->  
    <license> 
    <!--license用于法律上的名称--> 
      <name>Apache 2</name>  
      <!--官方的license正文页面的URL-->
      <url>http://www.apache.org/licenses/</url>  
      <!--项目分发的主要方式:repo,可以从Maven库下载manual,用户必须手动下载和安装依赖-->
      <distribution>repo</distribution>  
      <!--关于license的补充信息-->
      <comments>Apache 2.0 license</comments>  
    </license>  
  </licenses>  
  <!--SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用。-->  
  <scm>  
    <!--SCM的URL,该URL描述了版本库和如何连接到版本库。欲知详情,请看SCMs提供的URL格式和列表。该连接只读。-->  
    <connection>  
        scm:git:http://github.com/tyan   
    </connection>  
    <!--给开发者使用的,类似connection元素。即该连接不仅仅只读-->
    <developerConnection>  
        scm:git:http://github.com/tyan   
    </developerConnection> 
    <!--当前代码的标签,在开发阶段默认为HEAD-->
    <tag></tag>         
    <!--指向项目的可浏览SCM库(例如ViewVC或者Fisheye)的URL。-->  
    <url>http://github.com/tyan</url>  
  </scm>  
  <!--描述项目所属组织的各种属性。Maven产生的文档用-->  
  <organization>  
   <!--组织的全名-->
      <name>Maven</name>   
      <!--组织主页的URL-->
      <url>http://maven.apache.org/</url>  
  </organization> 
  <!--构建项目需要的信息-->
  <build> 
    <!--该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。-->
    <sourceDirectory></sourceDirectory> 
    <!--该元素设置了项目脚本源码目录,该目录和源码目录不同:绝大多数情况下,该目录下的内容会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。-->
    <scriptSourceDirectory></scriptSourceDirectory> 
    <!--该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。-->
    <testSourceDirectory></testSourceDirectory> 
    <!--被编译过的应用程序class文件存放的目录。通常是在target目录下-->
    <outputDirectory></outputDirectory> 
    <!--被编译过的测试class文件存放的目录。-->
    <testOutputDirectory></testOutputDirectory>
    <!--使用来自该项目的一系列构建扩展-->
    <extensions> 
     <!--描述使用到的构建扩展。-->
     <extension> 
      <!--构建扩展的groupId-->
      <groupId></groupId> 
      <!--构建扩展的artifactId-->
      <artifactId></artifactId> 
      <!--构建扩展的版本-->
      <version></version>
      </extension>
    </extensions> 
    <!--当项目没有规定目标(Maven2 叫做阶段)时的默认值-->
    <defaultGoal></defaultGoal> 
    <!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
    <resources> 
     <!--这个元素描述了项目相关或测试相关的所有资源路径-->
     <resource> 
      <!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。-->
      <targetPath></targetPath> 
      <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
      <filtering></filtering> 
      <!--描述存放资源的目录,该路径相对POM路径-->
      <directory></directory> 
      <!--包含的模式列表,例如**/*.xml.-->
      <includes></includes> 
      <!--排除的模式列表,例如**/*.xml-->
      <excludes></excludes>
     </resource>
    </resources> 
    <!--这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性文件。-->
    <testResources> 
     <!--这个元素描述了测试相关的所有资源路径es/re,参见build/resourcsource元素的说明-->
     <testResource>
      <targetPath></targetPath>
      <filtering></filtering>
      <directory></directory>
      <includes></includes>
      <excludes></excludes>
     </testResource>
    </testResources> 
    <!--构建产生的所有文件存放的目录-->
    <directory></directory> 
    <!--产生的构件的文件名,默认值是${artifactId}-${version}。-->
    <finalName></finalName> 
    <!--当filtering开关打开时,使用到的过滤器属性文件列表-->
    <filters></filters> 
    <!--子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置-->
    <pluginManagement> 
     <!--使用的插件列表 。-->
     <plugins> 
      <!--plugin元素包含描述插件所需要的信息。-->
      <plugin> 
       <!--插件在仓库里的group ID-->
       <groupId></groupId> 
       <!--插件在仓库里的artifact ID-->
       <artifactId></artifactId> 
       <!--被使用的插件的版本(或版本范围)-->
       <version></version> 
       <!--是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled。-->
       <extensions></extensions> 
       <!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。-->
       <executions> 
        <!--execution元素包含了插件执行需要的信息-->
        <execution> 
         <!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标-->
         <id></id> 
         <!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段-->
         <phase></phase> 
         <!--配置的执行目标-->
         <goals></goals> 
         <!--配置是否被传播到子POM-->
         <inherited></inherited> 
         <!--作为POM对象的配置-->
         <configuration></configuration>
        </execution>
       </executions> 
       <!--项目引入插件所需要的额外依赖-->
       <dependencies> 
        <!--参见dependencies/dependency元素-->
        <dependency>
         ...
        </dependency>
       </dependencies>      
       <!--任何配置是否被传播到子项目-->
       <inherited></inherited> 
       <!--作为POM对象的配置-->
       <configuration></configuration>
      </plugin>
     </plugins>
    </pluginManagement> 
    <!--使用的插件列表-->
    <plugins> 
     <!--参见build/pluginManagement/plugins/plugin元素-->
     <plugin>
      <groupId></groupId>
      <artifactId></artifactId>
      <version></version>
      <extensions></extensions>
      <executions>
       <execution>
        <id></id>
        <phase></phase>
        <goals></goals>
        <inherited></inherited>
        <configuration></configuration>
       </execution>
      </executions>
      <dependencies> 
        <!--参见dependencies/dependency元素-->
        <dependency>
        ...
        </dependency>
      </dependencies>
      <goals></goals>
      <inherited></inherited>
      <configuration></configuration>
     </plugin>
    </plugins>
  </build> 
  <!--在列的项目构建profile,如果被激活,会修改构建处理-->
  <profiles> 
    <!--根据环境参数或命令行参数激活某个构建处理-->
    <profile> 
    <!-- 参见settings.xml文件 -->
    </profile>
  </profiles> 
  <!--模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径-->
  <modules></modules>
  <!--发现依赖和扩展的远程仓库列表。-->  
  <repositories>  
    <!--包含需要连接到远程仓库的信息-->
    <repository> 
      <!--如何处理远程仓库里发布版本的下载-->
      <releases> 
        <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
        <enabled></enabled> 
        <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always,daily(默认),interval:X(X是以分钟为单位的时间间隔),或never。-->
        <updatePolicy></updatePolicy> 
        <!--当Maven验证构件校验文件失败时该怎么做:ignore(忽略),fail(失败),或者warn(警告)。-->
        <checksumPolicy></checksumPolicy>
      </releases> 
      <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素-->
      <snapshots>
        <enabled></enabled>
        <updatePolicy></updatePolicy>
        <checksumPolicy></checksumPolicy>
      </snapshots> 
      <!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库-->
      <id>maven</id>  
      <!--远程仓库名称-->
      <name>maven</name>  
      <!--远程仓库URL,按protocol://hostname/path形式-->
      <url></url>  
      <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。-->
      <layout>default</layout>            
    </repository>  
  </repositories> 
  <!--发现插件的远程仓库列表,这些插件用于构建和报表-->
  <pluginRepositories> 
    <!--包含需要连接到远程插件仓库的信息.参见repositories/repository元素-->
    <pluginRepository>
      ...
    </pluginRepository>
  </pluginRepositories> 
     
  <!--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。-->  
  <dependencies>  
    <dependency>
    <!--依赖的groupId-->
      <groupId>org.apache.maven</groupId>  
      <!--依赖的artifactId-->
      <artifactId>maven-artifact</artifactId>  
      <!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。-->
      <version>3.8.1</version>  
      <!--依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。如果设置extensions为 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整。-->
      <type>jar</type> 
      <!--依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。-->
      <classifier></classifier> 
      <!--依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。 
                - compile :默认范围,用于编译   
                - provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath   
                - runtime: 在执行时需要使用   
                - test:    用于test任务时使用   
                - system: 需要外在提供相应的元素。通过systemPath来取得   
                - systemPath: 仅用于范围为system。提供相应的路径   
                - optional:   当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用-->  
      <scope>test</scope>     
      <!--仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。--> 
      <systemPath></systemPath>  
      <!--当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题--> 
      <exclusions>
        <exclusion>  
          <artifactId>spring-core</artifactId>  
          <groupId>org.springframework</groupId>  
        </exclusion>  
      </exclusions>    
      <!--可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。可选依赖阻断依赖的传递性。-->  
      <optional>true</optional>
    </dependency>
  </dependencies> 
  <!--不赞成使用. 现在Maven忽略该元素.-->
  <reports></reports> 
  <!--该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接。--> 
  <reporting> 
    <!--true,则,网站不包括默认的报表。这包括“项目信息”菜单中的报表。-->
    <excludeDefaults></excludeDefaults> 
    <!--所有产生的报表存放到哪里。默认值是${project.build.directory}/site。-->
    <outputDirectory></outputDirectory>
    <!--使用的报表插件和他们的配置。-->
    <plugins> 
      <!--plugin元素包含描述报表插件需要的信息-->
      <plugin> 
        <!--报表插件在仓库里的group ID-->
        <groupId></groupId> 
        <!--报表插件在仓库里的artifact ID-->
        <artifactId></artifactId> 
        <!--被使用的报表插件的版本(或版本范围)-->
        <version></version>
        <!--任何配置是否被传播到子项目-->
        <inherited></inherited>
        <!--报表插件的配置-->
        <configuration></configuration>
        <!--一组报表的多重规范,每个规范可能有不同的配置。一个规范(报表集)对应一个执行目标。例如,有1,2,3,4,5,6,7,8,9个报表。1,2,5构成A报表集,对应一个执行目标。2,5,8构成B报表集,对应另一个执行目标-->
        <reportSets> 
          <!--表示报表的一个集合,以及产生该集合的配置-->
          <reportSet> 
            <!--报表集合的唯一标识符,POM继承时用到-->
            <id></id> 
            <!--产生报表集合时,被使用的报表的配置-->
            <configuration></configuration> 
            <!--配置是否被继承到子POMs-->
            <inherited></inherited>
            <!--这个集合里使用到哪些报表-->
            <reports></reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting> 
  <!--继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述groupId和artifactId信息),如果groupId和artifactId以外的一些信息没有描述,则通过groupId和artifactId匹配到这里的依赖,并使用这里的依赖信息。--> 
  <dependencyManagement>
    <dependencies> 
      <!--参见dependencies/dependency元素-->
      <dependency>
        ...
      </dependency>
    </dependencies>
  </dependencyManagement>     
  <!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。-->  
  <distributionManagement> 
    <!--部署项目产生的构件到远程仓库需要的信息-->
    <repository> 
      <!--是分配给快照一个唯一的版本号,参见repositories/repository元素-->
      <uniqueVersion></uniqueVersion>
      <id>maven</id>  
      <name>Maven Release Repository</name>  
      <url></url>  
      <layout/>
    </repository> 
    <!--构件的快照部署位置,如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素-->  
    <snapshotRepository>
      <uniqueVersion></uniqueVersion>
      <id>mave</id> 
      <name>Maven Snapshot Repository</name> 
      <url></url>  
      <layout></layout>
    </snapshotRepository> 
    <!--部署项目的网站需要的信息-->  
    <site> 
      <!--部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置-->  
      <id>site</id>  
      <!--部署位置的名称-->
      <name>website</name>  
      <!--部署位置的URL,按protocol://hostname/path形式-->
      <url></url>  
    </site> 
    <!--项目下载页面的URL。如果没有该元素,用户应该参考主页。使用该元素的原因是:帮助定位那些不在仓库里的构件(由于license限制)。-->
    <downloadUrl></downloadUrl> 
    <!--如果构件有了新的groupId和artifactId(构件移到了新的位置),这里列出构件的重定位信息。-->
    <relocation> 
      <!--构件新的group ID-->
      <groupId></groupId> 
      <!--构件新的artifact ID-->
      <artifactId></artifactId> 
      <!--构件新的版本号-->
      <version></version> 
      <!--显示给用户的,关于移动的额外信息,例如原因。-->
      <message></message>
    </relocation>
    <!--给出该构件在远程仓库的状态。不得在本地项目中设置该元素,因为这是工具自动更新的。有效的值有:none(默认),converted(仓库管理员从Maven 1 POM转换过来),partner(直接从伙伴Maven 2仓库同步过来),deployed(从Maven 2实例部署),verified(被核实时正确的和最终的)。-->
    <status></status>
  </distributionManagement> 
  <!--以值替代名称,Properties可以在整个POM中使用,也可以作为触发条件(见settings.xml配置文件里activation元素的说明)。格式是<name>value</name>。-->
  <properties></properties>
</project>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容