您的位置:首页 > 其它

学习maven使用笔记

2016-12-14 18:08 127 查看
Maven基础

快速入门:

maven的介绍:是基于项目对象模型(POM),可以通过一小段信息来管理项目的构建,报告和文档的软件项目管理工具。 http://maven.apache.org/ /bin  包含mvn的运行脚本
/boot 包含类加载器的框架
/conf 是配置文件目录
/lib  maven自身运行的类库

安装系统配置信息:
M2_HOME  安装路径
path      ;%M2_HOME%/bin

项目目录结构:
   src
        -main(主要功能的源码包)
            -java(.Java文件的目录)
                -package
           -resources(资源文件的目录)
        -test(测试的源码包)
            -java
                -package
             -resources
        resources
 target(class文件,报告等信息存储的地方)

pom.xml的配置:放在项目的根目录下(maven工程的描述文件)
<groupId> com.imooc.maven02 </groupId>     groupId的值就是项目的包名 com.imooc.maven02
<artifactId> maven01-mode2 </artifactId>       artifactId是模块名  maven01-mode2
<version> 0.0.1SNAPSHOT </version>              版本的信息   0.0.1SNAPSHOT
配置junit的文件
<dependencies>
    <dependency>
    坐标
        <groupId>junit</groupId>            groupId的值就是项目的包名 com.imooc.maven01
        <artifactId>junit</artifactId>         artifactId是模块名  maven01-model
        <version>4.10</version>               版本的信息   0.0.1SNAPSHOT
    </dependency>
    <dependency>                                   引入maven01 jar包坐标到本地仓库
        <groupId>junit</groupId>            groupId的值就是项目的包名 com.imooc.maven01
        <artifactId>junit</artifactId>        artifactId是模块名  maven01-model
        <version>4.10</version>              版本的信息   0.0.1SNAPSHOT
    </dependency>
</dependencies>

maven常用命令:
mvn -v           查看maven的版本
    compile      编译项目
    test            测试
    package     打包项目

    clean         删除target编译生成的字节文件
    install       安装jar包到本地仓库中  先进入maven01的根目录,执行install命令将jar文件本地仓库

archetype插件:用于创建符合maven规定的目录骨架     
创建目录的两种方式:
命令符:   mvn archetype:generate    按照提示进行选择
           或者 mvn archetype:generate 
                                        -dgroup ID=组织名   公司网址的反写+项目名
                                        -dartifactId=项目名-模块名 
                                        -Dversion=版本号
                                        -Dpackage=代码所存在的包

maven中的坐标和仓库:

坐标 
    构件 
仓库
    本地仓库和远程仓库

镜像仓库   一般使用默认的中央仓库
    在不能访问国外网的时候,在setting配置文件中145行<mirror>配置镜像文件
    <mirror>
        <id> maven.net.cn </id>    仓库的ID
        <mirrorOf>central</mirrorOf> 为哪个仓库进行配置或使用*通配符
        <name>central mirror in china</name>
        <url>http://maven.net.cn/content/groups/public </url>
    </mirror>

更改仓库的位置:默认存放在当前用户的根目录下 .m2>>rtepository>> 
一般不放在c盘:
修改Settings 53行
<localRepository>存入你的放置路径</localRepository>

maven 的生命中周期和插件:
完整项目构建过程包括:清理;编译;测试;打包;集成测试;验证;部署。

maven 的生命中周期:
clean    清理项目   pre-clean     clean    post-clean
default 构建项目   compile        test      package    install
site  生成项目站点 
                    pre-site  在生成项目站点前要完成的工作
                    site      生成项目的站点文档
                    post-site 在生成项目站点后要完成的工作
                    site-deploy 发布生成的站点到服务器上

pom.xml常用元素介绍:
<project> </project>是pom的根元素,对pom做出一些限制
<modelVersion>4.0.0</modelVersion>   指定了当前pom的版本

<groupId >公司网址的反写+项目名</groupId>     当前主项目地址
<artifactId> 项目名+模块名 </artifactId>              实际项目名
<version> 0.0.1SNAPSHOT </version>                版本的信息<snapshot 快照   alpha 内部测试  beta 公测   release 稳定   GA 正式发布>
<packaging>  </packaging>                                maven打包的方式,默认的是jar包  还有war(web的打包格式) zip pom
<name></name>                                                项目描述名
<url></url>                                                         项目地址
<description></description>           项目的描述
<developers></developers>            开发人员的列表
<licenses></licenses>                      许可证的信息,例如开源框架的许可证信息
<organization></organization>       组织

<dependencies>   依赖列表
    <dependency>  依赖项
    坐标
        <groupId>junit</groupId>            groupId的值就是项目的包名 com.imooc.maven01
        <artifactId>junit</artifactId>        artifactId是模块名  maven01-model
        <version>4.10</version>              版本的信息   0.0.1SNAPSHOT
        <type></type>
        <scope></scope>                                   依赖范围
        <optional></optional>  true  or  false      设置依赖是否可选

        <exclusions>      排除依赖传递列表
        <exclusion> 

            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<!-- 依赖的管理-->  抽象父类模块共子模块使用,一般不用
<dependencyManagement>
    <dependencies>  依赖列表 
        <dependency>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>      插件的列表
        <plugin>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>   
        <plugin>
    <plugins>
</build>

<parent></parent> 通常用于在子模块中对父模块的pom的继承
<modules>聚合编译多个maven模块一起编译
<module>
</module>
<modules>

依赖的范围: maven中提供三种classpath: 编译 测试 运行
<scope>test </scope>   
            -compile  默认的范围,编译测试运行都有效
            -provided 在编译和测试的时候有效 在运行的时候不会被加入
            -runtime  在测试和运行时有效
            -test     只在测试范围有效
            -system   编译和测试有效   与本机系统相关联,可移植性差
            -import   导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependecy的配置
                      表示从其他继承的pom中的依赖

依赖的传递: 通过引用父类项目的jar包,依赖父类。当引用的父类依赖了祖父类,
                   那么当前类又依赖了祖父类。也可以通过排除祖父类的依赖,达到断开依赖的传递
依赖的冲突:有A和B依赖了同一个构件但是不同版本,那么对于依赖了AB的C来说依赖了哪一个构建
依赖  原则: 短路优先  即优先解析依赖路径最短的版本
                   如果路径长度相同的话,则谁先声明,先解析谁。
聚合和继承:想将多个maven一起进行install到仓库中,可以通过聚合一次性执行该命令。
            <packaging>pom</packaging>
            <modules>聚合编译多个maven模块一起编译
            <module>maven1路径</module>
            <module>maven2路径</module>
            <module>maven3路径</module>
            <modules>
            执行当前pom的install命令就完成所有maven*的install命令

继承:即多个maven使用同一个插件的时候,可以定义一个父类的pom,以供所有子类maven使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息