文章目录
- 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 容器的裁剪、精简版),但是中央仓库中并没有。