1.maven基础使用
下载
下载位置,目前直接使用3.x版本即可
安装
直接解压到对应目录即可,配置M2_HOME环境变量指向解压后目录,一些软件会默认引用这个环境变量来查找Maven的安装。然后配置path变量指向M2_HOME/bin,便于命令行直接使用。
配置
优先使用~/.m2/setting.xml配置,否则使用默认的M2_HOME/conf/setting.xml配置。可以配置MAVEN_OPTS,比如-Xms128m -Xmx512m限制maven的内存占用,较大项目可能maven生成站点时内存占用过大。
maven的包从仓库中拉取引用,仓库分为本地仓库和*仓库,优先从本地仓库读取。存储路径为groupId/artifactId/version/artifactId-version.packaging,默认maven的本地仓库直接下载保存在~/.m2/repository。
常在setting.xml中修改本地仓库位置,如下:
<localRepository>D:/m2/repository</localRepository>
国内下载包,最好还是使用镜像,通常使用阿里源,同样在setting.xml中如下配置:
<mirror>
<id>aliyun</id>
<name>aliyun Maven</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
IDEA中如下配置使用独立的maven
- Maven home directory maven的安装位置(M2_HOME)
- User setting file 用户的配置文件
- Local repository 一般会自动识别,勾选override即可
生命周期
maven不仅是一个包管理工具,它还是梳理整个流程的工具:初始化、编译、测试、打包、集成测试、验证和部署。Maven包含三套生命周期:
- clean生命周期:目标是清理项目
- default生命周期:真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分,也是我们最常提到的。
- site生命周期:目的是建立和发布项目站点
默认通过预先设计好的骨架(archetype)生成一个maven项目,包含常见maven生命阶段如下,后一步要等到前一步执行完才能进行。
- clean 清理前一次编译中间和结果文件
- compile 编译.class
- test 编译结果测试,测试代码不会被打包
- package 编译结果打包
- install 编译结果安装到本地仓库,允许别的项目使用
- deploy 编译结果发布到远程仓库,允许其他人使用
插件
Maven核心只定义了生命周期各个阶段,具体任务是绑定到对应的插件上完成的。可以选择将某个插件绑定到生命周期的某个阶段,也叫自定义绑定,在绑定时还可以指定具体的插件配置参数。
默认打包package的方法并不能将依赖包一起打进来,通常还存在包引用的问题,为了快捷方便,可以考虑直接将所有引用打包进来,这需要用maven-shade-plugin打包进来,类似如下,这里将maven-shade-plugin绑定到package阶段,而且configuration中指定了主类参数。
<!-- 用来创建超级JAR包的Maven shade插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.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>com.jimwen.mainclass</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
原创,转载请注明来自