安裝Maven
1. 登陸 http://maven.apache.org/download.cgijava
2. 下載 maven 壓縮包web
3. 解壓apache-maven-3.6.0-bin.tar.gz 到一個目錄(我這裏是MAC,解壓到「/Users/shongbing/Applications/apache-maven-3.6.0」)spring
4. 配置環境變量(MAC環境變量)apache
cd ~vim
vim .bash_profilebash
在最後增長兩行:app
export MAVEN_HOME=/Users/shongbing/Applications/apache-maven-3.6.0webapp
export PATH=$PATH:$MAVEN_HOME/binmaven
source .bash_profilespring-boot
5. 測試是否安裝成功
mvn -v
Maven打包命令介紹
mvn clean package 依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7個階段;
mvn clean install 依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8個階段;
mvn clean deploy 依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9個階段。
由上面的分析可知主要區別以下:
package命令完成了項目編譯、單元測試、打包功能,但沒有把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫和遠程maven私服倉庫;
install命令完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫,但沒有佈署到遠程maven私服倉庫;
deploy命令完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫和遠程maven私服倉庫。
配置mainClass
須要在pom.xml中增長configruation配置mainClass
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.vmware.firstappdemo.FirstAppDemoApplication</mainClass> </configuration> </plugin> </plugins> </build>
第一種:打包爲JAR
1. 打開命令行進入項目根目錄,運行命令:mvn -Dmaven.test.skip -U clean package
shongbing-a01:~ shongbing$ cd Downloads/first-app-demo shongbing-a01:first-app-demo shongbing$ mvn -Dmaven.test.skip -U clean package [INFO] Scanning for projects... [INFO] [INFO] ---------------------< com.vmware:first-app-demo >---------------------- [INFO] Building first-app-demo 0.0.1-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ first-app-demo --- [INFO] [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ first-app-demo --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ first-app-demo --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 5 source files to /Users/shongbing/Downloads/first-app-demo/target/classes [INFO] [INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ first-app-demo --- [INFO] Not copying test resources [INFO] [INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ first-app-demo --- [INFO] Not compiling test sources [INFO] [INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ first-app-demo --- [INFO] Tests are skipped. [INFO] [INFO] --- maven-jar-plugin:3.1.1:jar (default-jar) @ first-app-demo --- [INFO] Building jar: /Users/shongbing/Downloads/first-app-demo/target/first-app-demo-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:2.1.2.RELEASE:repackage (repackage) @ first-app-demo --- [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.278 s [INFO] Finished at: 2019-01-13T14:18:25+08:00 [INFO] ------------------------------------------------------------------------
2. 運行jar包測試, java -jar xxxx.jar
shongbing-a01:first-app-demo shongbing$ cd target/ shongbing-a01:target shongbing$ java -jar first-app-demo-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.2.RELEASE) 2019-01-13 14:18:42.805 INFO 31960 --- [ main] c.v.f.FirstAppDemoApplication : Starting FirstAppDemoApplication v0.0.1-SNAPSHOT on shongbing-a01.vmware.com with PID 31960 (/Users/shongbing/Downloads/first-app-demo/target/first-app-demo-0.0.1-SNAPSHOT.jar started by shongbing in /Users/shongbing/Downloads/first-app-demo/target) 2019-01-13 14:18:42.808 INFO 31960 --- [ main] c.v.f.FirstAppDemoApplication : No active profile set, falling back to default profiles: default 2019-01-13 14:18:44.419 INFO 31960 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080 2019-01-13 14:18:44.424 INFO 31960 --- [ main] c.v.f.FirstAppDemoApplication : Started FirstAppDemoApplication in 2.239 seconds (JVM running for 2.869)
第二種:打包爲WAR
1. 在pom.xml的「modelVersion」後添加 <packaging>war</packaging>
2. 在目錄 src/main/ 中建立目錄 webapp/WEB-INF,而後在WEB-INF中添加 web.xml(內容爲空)
3. 打開命令行進入項目根目錄,運行命令:mvn -Dmaven.test.skip -U clean package
shongbing-a01:first-app-demo shongbing$ mvn -Dmaven.test.skip -U clean package [INFO] Scanning for projects... [INFO] [INFO] ---------------------< com.vmware:first-app-demo >---------------------- [INFO] Building first-app-demo 0.0.1-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ first-app-demo --- [INFO] Deleting /Users/shongbing/Downloads/first-app-demo/target [INFO] [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ first-app-demo --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ first-app-demo --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 5 source files to /Users/shongbing/Downloads/first-app-demo/target/classes [INFO] [INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ first-app-demo --- [INFO] Not copying test resources [INFO] [INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ first-app-demo --- [INFO] Not compiling test sources [INFO] [INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ first-app-demo --- [INFO] Tests are skipped. [INFO] [INFO] --- maven-war-plugin:3.2.2:war (default-war) @ first-app-demo --- [INFO] Packaging webapp [INFO] Assembling webapp [first-app-demo] in [/Users/shongbing/Downloads/first-app-demo/target/first-app-demo-0.0.1-SNAPSHOT] [INFO] Processing war project [INFO] Copying webapp resources [/Users/shongbing/Downloads/first-app-demo/src/main/webapp] [INFO] Webapp assembled in [173 msecs] [INFO] Building war: /Users/shongbing/Downloads/first-app-demo/target/first-app-demo-0.0.1-SNAPSHOT.war [INFO] [INFO] --- spring-boot-maven-plugin:2.1.2.RELEASE:repackage (repackage) @ first-app-demo --- [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.981 s [INFO] Finished at: 2019-01-13T14:54:28+08:00 [INFO] ------------------------------------------------------------------------
4. 運行WAR包
shongbing-a01:target shongbing$ java -jar first-app-demo-0.0.1-SNAPSHOT.war . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.2.RELEASE) 2019-01-13 14:56:17.380 INFO 33405 --- [ main] c.v.f.FirstAppDemoApplication : Starting FirstAppDemoApplication v0.0.1-SNAPSHOT on shongbing-a01.vmware.com with PID 33405 (/Users/shongbing/Downloads/first-app-demo/target/first-app-demo-0.0.1-SNAPSHOT.war started by shongbing in /Users/shongbing/Downloads/first-app-demo/target) 2019-01-13 14:56:17.386 INFO 33405 --- [ main] c.v.f.FirstAppDemoApplication : No active profile set, falling back to default profiles: default 2019-01-13 14:56:19.401 INFO 33405 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080 2019-01-13 14:56:19.409 INFO 33405 --- [ main] c.v.f.FirstAppDemoApplication : Started FirstAppDemoApplication in 2.594 seconds (JVM running for 3.183)