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即可

1.maven基础使用

生命周期

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>

原创,转载请注明来自