Maven的介绍及使用

来源:互联网 发布:中国出口构成 知乎 编辑:程序博客网 时间:2024/05/24 06:49

maven:

是一个构建工具,基于java平台的项目构建,依赖管理、项目信息管理

构建:

构建是每一位程序员每天都在做的工作。早上来到公司,我们做的第一件事就是从源码库签出最新的代码,然后进行单元测试,如果发现失败的测试,会找相关的同事一起调试,修复代码错误。接着回到自己的工作上来,编写自己的单元测试及产品代码。
构建就是除了编写源代码,还有编译,运行单元测试,生成文档,打包和部署等繁琐切不起眼的工作上。

优势:

跨平台、
服务于构建、
标准化、
封装构建过程、
依赖管理工具、
项目规范化 —— 预定优于配置

仓库:

中央仓库:maven的仓库在国外服务器
本地仓库:当依赖一个jar包时,首先查询的是本地仓库,如果本地仓库没有,那么从中央仓库下载,下载到本地仓库。依赖时从本地仓库直接依赖
本地仓库默认在${user.home}/.m2/repository
通过maven的conf目录下的settings可以设置本地仓库的位置
<localRepository>D:\\maven_repo\\repository</localRepository>
私服:私有服务器
在企业中一般都是搭建一个私有服务器nexus(nexus),搭建私服后,可以依赖私服。此外一些无法从外部仓库下载的构件也能从本地上传到私服提供局域网中其他人使用
国内私服:开源中国、阿里云

依赖范围:

Compile:编译依赖范围。默认使用该依赖范围,编译、测试、运行都有效。
Test:测试依赖范围。只在测试的时候需要。比如:junit。
Provided:已提供依赖范围。对编译和测试有效,运行时无效。比如:servletAPI
Runtime:运行依赖范围。对测试和运行有效,但在编译时无效。比如:JDBC驱动
System:系统依赖范围。一般不适用。

传递性依赖:

依赖有可能产生冲突:
冲突场景:
a依赖b,b依赖c,c的版本是1.0
a依赖e,e依赖c,c的版本是2.0
结果:按照第一个声明的算,1.0版本
冲突场景:
a依赖b,b依赖c,c依赖d,d的版本1.0
a依赖e,e依赖d,d的版本2.0
结果:路径最近的有限,2.0版本

排除依赖:

<dependency>     <groupId>com.siggy.crm</groupId>          <artifactId>crm-user</artifactId>          <version>0.0.1-SNAPSHOT</version>          <exclusions>              <exclusion>                                 <groupId>com.google.code.gson</groupId>                  <artifactId>gson</artifactId>              </exclusion>          </exclusions></dependency>


Maven项目的聚合和继承

聚合:
建立一个空的Maven项目作为管理者

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.siggy.crm</groupId>  <artifactId>crm-parent</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>pom</packaging>  <modules>      <module>../crm-core</module>      <module>../crm-user</module>      <module>../crm-login</module>  </modules></project>

继承

 <parent>      <artifactId>crm-parent</artifactId>      <groupId>com.siggy.crm</groupId>      <version>0.0.1-SNAPSHOT</version>  </parent>  <groupId>com.siggy.crm</groupId>  <artifactId>crm-admin</artifactId>  <version>0.0.1-SNAPSHOT</version>

使用Maven构建web项目

Tomcat7的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户。这里我把所用的权限都添加给admin用户了,具体代码如下:

<role rolename="admin-gui"/><role rolename="admin-script"/><role rolename="manager-gui"/><role rolename="manager-script"/><role rolename="manager-jmx"/><role rolename="manager-status"/><user username="admin" password="1111" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>

Maven的Server的配置:在Maven的安装路径找到conf目录下的setting.xml文件,在<servers>节点中添加tomcat7下配置的用户信息(id可以任意填写,但username和password和上面一致):

<server>    <id>tomcat7</id>    <username>admin</username>    <password>1111</password></server>

在web项目的pom.xml文件的<plugins>节点中,添加tomcat7的maven插件
<plugin>    <groupId>org.apache.tomcat.maven</groupId>    <artifactId>tomcat7-maven-plugin</artifactId>    <version>2.1</version>    <configuration>        <!-- 注意此处的url -->        <url>http://localhost:8080/manager/text</url>        <server>tomcat7</server> <!-- 此处的名字必须和setting.xml中配置的ID一致-->        <path>/mavenProject</path> <!-- 此处的名字是项目发布的工程名-->    </configuration></plugin>

最后只需要 mvn tomcat7:deploy 即可(必须事先启动tomcat服务器)



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 坠胎方法 如何坠胎 坠胎后注意事项 坠胎是什么意思 梦见坠胎 坠胎吃什么药 做了人流什么时候来月经 堕胎对女人的伤害 堕胎后 打台 打胎的报应 堕胎危害 打胎会有报应吗 打胎危害 女人打胎 打胎的后果 如何堕胎 堕胎英文 堕胎的果报 堕胎的后果 好友母亲为我坠胎 坠胡 坠胡图片 黑鹰坠落 陨石坠落 等星星坠落 坠落星空 坠落 飞机坠落 自由坠落 黑鹰坠落h 星球坠落 等星星坠落陌言川 太空火球坠落智利 陨石坠落事件 坠落星空歌曲 陨石坠落60秒 长途大巴坠落100米深悬崖 秘鲁大巴坠落深谷事故 秘鲁大巴坠落深谷g 长春陨石坠落