文章目錄
- Maven 倉庫
- 中央倉庫和本地倉庫
- 中央倉庫
- 本地倉庫
- Maven 命令
- generate 命令
- compile 命令
- clean 命令
- test 命令
- package 命令
- install 命令
- Maven 插件機制
- 官方插件:Compile 插件
- Tomcat 7 插件
Maven 倉庫
中央倉庫和本地倉庫
[?] 簡單一點說
中央倉庫是一個網址;本地倉庫是一個本地的文件夾。
在使用 maven 過程中,maven 會去網絡上的『中央倉庫』下載你所需要的 java 庫到你本地的某個文件夾下,這個存儲 maven 下載下來的 jar 包的文件夾就是你的『本地倉庫』。
[?] 補充
本質上,其實是 maven 要求你的"本地倉庫"中必須要有你所要用到的包,而因為你本地倉庫中沒有,所以,maven 會去網絡上的"中央倉庫"下載。一旦在第一次下載過后,由于你的本地倉庫中存在了這個 jar 包,那么后續,maven 就不再重復下載它了。
中央倉庫
如果不指定的話,maven 默認是從 https://repo1.maven.org/maven2 下載(網速感人且不穩定)。
在 maven 的全局配置文件 %homepath%/.m2/settings.xml 中,我們可以重新指定中央倉庫的網址。
我們在Maven 基礎之簡介,基礎配置中做的配置工作就是改動這個。
本地倉庫
本地倉庫指的是 “%homepath%/.m2/repository” 文件夾。
maven 從中央倉庫(上面所配置的那個網址)中下載下來的 java 庫的 jar 包,都會放在這里。
本地倉庫的查找順序:
- USER_HOME/.m2/settings.xml 中所配置的目錄
- M2_HOME/conf/settings.xml 中所配置的目錄
- USER_HOME/.m2/repository 目錄
Maven 命令
語法:
mvn <指令>
generate 命令
generate 命令用于創建項目。在你所期望建立項目的文件路徑下,執行如下命令
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
這條命令會在當前目錄下,新建一個名字與 artifactId 值相同的 Maven 項目。
compile 命令
執行 mvn compile
命令,完成編譯操作
執行完畢后,會生成 target 目錄,該目錄中存放了編譯后的字節碼文件(.class 文件)。
clean 命令
執行 mvn clean
命令,完成清理操作。
執行完畢后,會將 target 目錄刪除。
test 命令
執行 mvn test
命令,完成單元測試操作。
執行完畢后,會在 target 目錄中生成三個文件夾:surefire 、surefire-reports(測試報告)、test-classes(測試的字節碼文件) 。
package 命令
執行 mvn package
命令,完成打包操作。
package
命令會涵蓋 compile
命令和 test
命令,即,執行 package
命令會觸發 compile
命令和 test
命令的執行。
執行完畢后,會在 target 目錄中生成一個文件,該文件可能是 jar 、war ,這取決于 pom.xml 配置文件中的 <packaging> 。
install 命令
將包安裝至本地倉庫,以便讓其它項目依賴。
install
命令會涵蓋 package 命令,即,執行 install
命令會觸發 package
命令的執行。
Maven 插件機制
Maven 本質上是一個插件的框架、平臺。任何一個 Maven 動作(即,命令)都是由具體的插件去完成的。
例如:
-
mvn compile
這個命令,就是由maven-compiler-plugin
插件提供的。 -
mvn test
這個命令,就是由maven-surefire-plugin
插件提供的。 -
mvn package
這個命令,就是由maven-jar-plugin
/maven-war-plugin
插件提供的。
Maven 除了提供了大量的官方插件外,還可以「安裝」第三方插件。
插件配置的依賴聲明整體結構(其它無關元素略。另外,build 習慣性在 dependencies 的后面):
project
├── dependencies
└── build└── plugins├── plugin├── plugin├── ...└── plugin
官方插件:Compile 插件
通常,官方插件都是默認激活使用的。一般,我們不會通過自定義的配置去覆蓋默認配置。
主要包含如下元素:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin>...</plugin><plugin>...</plugin><plugin>...</plugin><plugins>
</build>
Tomcat 7 插件
tomcat 7 插件是一個 tomcat 7 容器的裁剪、精簡版,并且它還提供了一個 tomcat7:run 命令來用這個裁剪版的運行當前項目。
我們在開發過程中 tomcat7-maven-plugin 就能運行當前項目,查看運行結果。
詳情
<build><plugins><plugin><!-- 配置插件 --><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><path>/demo</path><port>8080</port><uriEncoding>UTF-8</uriEncoding></configuration></plugin><plugin>...</plugin><plugin>...</plugin><plugin>...</plugin></plugins>
</build>
[?] 警告
有 tomcat 8 版本的 maven 插件(即,一個 tomcat 8 容器的裁剪、精簡版),但是中央倉庫中并沒有。