- 何为构建:清理(clean)、编译(compile)、单元测试(test)、生成文档(doc)、打包(package)、部署(deploy)
- 极限编程(XP):①简单;②交流与反馈;③测试驱动开发(TDD);④十分钟构建;⑤持续集成(CI);⑥富有信息的工作区。
- 解压maven包:
tar -xvzf apache-maven-x.x-bin.tar.gz
- 在安装目录旁平行地创建一个符号链接,方便日后的升级(基于UNIX):
ln -s maven文件夹名称 软连接文件名称
- 查看maven版本:
mvn -v
- 如果要升级maven,使用软连接:
rm 软连接文件名称
ln -s 新的升级的maven文件夹 软连接文件名称
- 打印出所有的java系统属性和环境变量:
mvn help:system
,依赖maven-help-plugin
插件。 - 可以在
settings.xml
中添加HTTP代理。 - 运行
mvn命令
实际上是执行了Java命令,那么Java命令可用的参数当然也应该在运行mvn命令时可用。设置环境变量MAVEN_OPTS
的值为:-Xms128m -Xmx512m
。 $ M2_HOME/conf/settings.xml
是全局范围内的,最佳实践是~/.m2/settings.xml
,即在~/.m2/
下创建setting.xml`文件,这是用户范围内的,可以避免无意识地影响到系统中的其他用户。- 不要使用IDE内嵌的Maven。
- 一个maven项目的基本坐标:groupId+artifactId+version。`
- SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
- 绝大多数情况下,应该把项目主代码放到
src/main/java/
目录下,而无须额外的配置,Maven会自动搜寻该目录找到项目主代码。项目中默认的测试代码目录是src/test/java
。 - 依赖的scope为test,说明该依赖只对测试有效。默认是compile,对主代码和测试代码都有效。
- 一些常用命令:
mvn clean compile -> 清理+编译
mvn clean test -> 清理+编译+测试
mvn clean package -> 清理+编译+测试+打包
mvn clean install -> 清理+编译+测试+打包+安装(安装到本地仓库中)
maven-surefire-plugin
是Maven负责执行测试的插件。- 给jar包设置一个main方法,使其称为可运行jar包。借助
maven-shade-plugin
。在pom.xml
中配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation = "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>xxx</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
在打包好的jar文件中,META-INF/MANIFEST.MF
文件中可以看到Main-Class
一行。
- 带有origin开头的jar是原始的jar,不可运行。
- 执行可运行jar文件:
java -jar jar包名称
- Maven2中maven会解析最新的版本,而不是最新的稳定版本,所以往往需要指定版本。
mvn archetype:generate
,创建项目骨架。- IDE中看到的maven依赖的包,其实际的位置指向了Maven本地仓库。