一、我们创建的maven项目所用到的所有的jar包统统都在maven仓库中,而仓库地址在国外,所以需要将中央仓库的地址换成国内的地址,常常用阿里的镜像,另外,我们下载的jar包时,会将所有的依赖都下载到本地C盘,当需要大量的jar包的时候就特别酸爽。。所以需要改到D盘等磁盘空间大的地方。
修改setting.xml:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<localRepository>D:/Program Files (x86)/jarBag</localRepository>
另外在写maven依赖的时候,可以参考maven仓库网站:
二、常用的maven命令
maven命令格式:
//执行plugin-name插件的goal-name目标
mvn -[plugin-name]:[goal:name]
mvn -version | 显示版本信息 |
mvn clean | 清除项目生成的临时文件,一般在target文件夹下面比如编译的源码文件。 |
mvn compile | 编译源代码 |
mvn package | 项目打包成一个jar或者war包 |
mvn test | 测试命令,或执行junit的测试用例 |
mvn install | 将打包的jar或者war文件复制到本地,供其他模块使用 |
mvn depoly | 将打包的文件发布到哦哦远程参考,供他人下载依赖使用 |
mvn site | 生成项目相关信息的网站 |
mvn eclipse:eclipse | 将项目转化为eclipse项目 |
mvn dependency:tree | 打印出项目的整个依赖树 |
mvn archetype:generate | 创建Maven的普通java项目 |
mvn tomcat7:run | 在tomcat容器中运行web应用 |
mvn jetty:run | 调用jetty插件的Run目标在jetty Servlet容器中启动web应用 |
在eclipse中,除了在cmd里执行命令以外,还可以之间选中pom.xml文件,然后右键run as——>maven build——>输入目标点击运行即可。
当然在IDEA中,可以直接点开右侧的maven,然后选择想执行的命令即可:
三、三种项目
在创建maven项目的时候,项目的打包类型packaging可以选择jar包和war包和POM,
1.pom工程:用在父级工程或聚合工程中。用来做jar包的版本控制。
2.war工程:将会打包成war,发布在服务器上的工程。如网站或服务,相当于javaee项目(Java Platform,Enterprise Edition,Java ee是在 Java se的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序.)
3.jar工程:将会打包成jar用作jar包使用,packaging默认类型,相当于javase项目(java Standard Edition,Java标准版,就是一般Java程序的开发就可以(如桌面程序),可以看作是JavaEE的子集)。
四、仓库
对于maven,有两类仓库:本地仓库和远程仓库。当maven根据坐标(groupid和artifarctid)学着构件的时候,会首先查询本地仓库,如果本地没有就去远程仓库查找并下载到本地仓库使用。如果远程仓库也没有,maven才会报错。
远程仓库又可以分成中央仓库、私服、其他公共库。
中央仓库是默认配置下,maven下载jar包的地方。在国外,下载比较慢,一般我们不用它。
私服是一种特殊的远程仓库,为例节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。内部的项目还能部署到私服上供其他项目使用。公司内部建立私服的好处:节省自己的外网带宽、加速maven构建、部署第三方控件、提高稳定性、降低中央仓库的负荷。
其他公共课“比如阿里巴巴的仓库。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/comtent/groups/public</url>
</mirror>
五、maven环境下构建多模块项目
将项目划分成很多小模块。比如:
·maven_parent :基模块,父模块(pom)
·maven_dao:数据库的访问层,是一个普通的Java项目,例如jdbc操作(jar)
·maven_service:项目的业务逻辑层,也是一个普通的java项目(jar)
·maven_controller:用来接收请求,响应数据,是一个web项目(war)
maven_controller会引用maven_service中的类和方法,maven_service又会引用maven_dao的类和方法,即controller依赖service,service依赖dao。
步骤:
1.创建一个父项目maven_parent:
不用勾选
直接命名创建
2.在父项目下创建子项目:
maven_dao和maven_service为普通quick start,maven_controller为webapp项目,三个都为maven_parent的子项目。
即,如果是普通的Java项目就直接创建为普通quick start,如果需要被浏览器访问就创建web项目。
3.设置模块之间的依赖关系
1)dao层:
新建一个包->在包下新建UserDao类->在类中添加方法
2)service层
添加maven_dao依赖->添加UserService类并添加方法(调用dao的方法)
3)controller层
t添加service模块依赖->添加Servlet依赖->新建java类,继承HttpServlet类,并重写servic方法,调用service层的方法->添加tomcat插件,启动项目。
4.启动
启动之前可以单独将每一个子项目install一下,最终再把父项目install。
tips:要注意install的顺序:
·依赖关系对安装顺序的要求:A依赖B,maven要求先安装B,再安装A。
·继承关系对安装顺序的要求:A(子工程)继承B(父工程),maven要求先安装B,再安装A。
对于上述例子,就要先install dao项目,再install service项目,再install controller项目。