javaweb之Maven项目管理工具学习

来源:互联网 发布:菜鸟学java 编辑:程序博客网 时间:2024/06/05 16:43

其实在真实的项目中我就已经在用maven了,今天决心整体系统的学习一遍maven。

maven是什么:maven翻译过来是内行、专家的意思。maven是跨平台开发的项目管理工具。主要服务于局域java平台的项目构建,依赖管理和项目信息管理。

为什么学习maven:maven相对于以前的ant,Eclipse ide,拥有统一的约定,有明确的目录结构,统一管理代码,拥有生命周期,构建过程自动化:如编译,测试,打包部署均可以自动化。

maven安装配置:略。

maven核心概念:项目对象模型pom:maven统一管理的配置文件pom.xml;

坐标:›groupId:定义当前Maven项目隶属项目,

    ›artifactId:定义实际项目中的一个模块,
            ›version:定义当前项目的当前版本,
    packaging:定义该项目的打包方式;
依赖管理:依赖声明主要包含如下元素:
<span style="white-space:pre"></span><dependencies>                                             <dependency>                                     <span style="white-space:pre"></span><groupId>junit</groupId>                                    <span style="white-space:pre"></span> <artifactId>junit</artifactId>                                    <span style="white-space:pre"></span> <version>4.10</version>                                    <span style="white-space:pre"></span> <scope>test</scope>                                            </dependency>                                               </dependencies>

  其中依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效,
2.test:测试依赖范围。只对于测试classpath有效,
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api,
4.runtime:运行时提供。例如:jdbc驱动;
依赖的最后要注意的一点:传递性依赖原则: 一、路径最近者优先  二、路径相同,第一声明者优先(注意1.dependencyManagement中定义的依赖子module不会共享2.dependencies中定义的依赖子module可以共享)  三、可选依赖不被传递   四、依赖优化:mvn dependency:list。
maven仓库:本地仓库和远程仓库;
maven生命周期:对项目的所有的构建过程进行抽象和统一;maven的三大生命周期:clean,default,site;
    maven聚合与继承:当一次性构建多个项目模块的时候,就需要对这些模块进行聚合,<modules><module>.....</module></modules>;而继承是为了消除重复,把很多相同的配置提取出来。
maven私服:略。

0 0