Maven是apache下的一个纯Java开发的开源项目,它是一个项目管理工具,使用maven对Java项目进行构建、依赖管理。
项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程。
传统使用eclipse构建项目的过程如下:
构建过程如下:
maven将项目构建的过程进行标准化,每个阶段使用一个m命令完成,下图展示了构建过程的一些阶段:
上图中部分阶段对应的命令如下:
清理阶段:clean,清理输出的class文件
编译阶段:compile,将java代码编译成class文件
打包阶段:package,java工程可以打成jar包,web工程可以打成war包
运行一个maven工程(web工程)需要一个命令:tomcat:run
什么是依赖?一个java项目可能要使用一些第三方的jar包才可以运行,那么我们说这个java项目依赖了这些第三方jar包。
举个例子:一个crm系统,它的架构是SSH框架,该crm项目依赖SSH框架,具体它依赖的是hibernate、spring、struts2。
什么是依赖管理?就是对项目所有依赖的jar包进行规范化管理。
传统的项目工程要管理所依赖的jar包完全靠人工进行,程序员从网上下载jar包添加到项目工程中,如下图:程序员手工将hibernate、spring、struts2的jar包添加到工程中的WEB-INF/lib目录下。
手工拷贝jar包添加到工程中的问题是:
maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行,如下图:
使用maven依赖管理添加jar包的好处:
安装需要Java支持(JDK >= 1.7)
官方下载地址:http://maven.apache.org/download.cgi
将下载好的压缩包解压到一个不含有中文和空格的目录中。
bin:mvn.bat(以run方式运行项目)、mvnDeug.bat(以debug方式运行项目)
boot:maven运行需要类加载器
conf:settings.xml,整个maven工具核心配置文件
lib:maven运行所依赖的jar包
计算机』-->『右键属性』-->『高级系统设置』-->『环境变量』-->『系统变量』
将%MAVEN_HOME%\bin添加到path中:
通过mvn -v命令检查maven是否安装成功,看到maven的版本为3.3.9及java版本为1.7即为安装成功。
maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
下图描述了maven中仓库的类型:
将准备好的本地仓库(repository.rar)解压到自己的电脑上
在MAVEN_HOME/conf/settings.xml文件中配置本地仓库位置:
使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下:
查看target目录,class文件已生成,编译完成。
通过入门程序中命令行的方式使用maven的工作效率不高,可以在eclipse开发工具中集成maven软件,eclipse是一个开发工具,maven是一个项目管理工具,maven有一套项目构建的规范,在eclipse中集成maven软件,最终通过eclipse创建maven工程。
1.选择3.3.9版本的maven软件
2.修改默认的本地仓库地址
注意:如果修改了settings.xml文件,需要点击上图的"Update Settings"按钮对本地仓库重建索引,点击"Reindex"。
3.maven配置完成需要测试在eclipse中是否可以浏览maven的本地仓库,如果可以正常浏览maven本地仓库,则说明eclipse集成maven已经完成。
打开eclipse仓库视图
找到Local respository本地仓库项,点击Rebuild index重建索引
重建索引完成后即可查看本地仓库内容:
第一步:创建一个maven工程
第二步:定义坐标
第三步:设置编译版本:查看上边工程的编译版本为1.5,此教程的是jdk1.7,需要设置编译版本为1.7,这里需要使用maven的插件来设置。在pom.xml中加入:
<build> <!-- 配置了很多插件 --> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
执行update project,查看编译版本为1.7:
第四步:定义web.xml:在src/webapp中添加WEB-INF/web.xml文件,可以右键项目自动生成
第五步:添加servlet/jsp的jar包,在pom.xml中添加servlet/jsp的坐标
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies>
此时会发现jar包已添加到项目中:
第六步:编写servlet,在src/main/java中创建ServletTest。
public class ServletTest extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher("/jsp/test.jsp").forward(req, resp); } }
第七步:编写jsp
第八步:在web.xml中配置servlet
<!-- 配置servlet --> <servlet> <servlet-name>servletTest</servlet-name> <servlet-class>cn.itcast.maven.ServletTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletTest</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping>
第九步:启动项目:右击项目---run as –maven build ….
测试:
在pom.xml中添加dependency标签:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency>
添加依赖需要指定依赖jar包的坐标,但是很多情况下我们是不知道jar包的坐标,可以通过如下方式查询:
如果在本地仓库中有我们要的jar包,可以在pom.xml中右键添加依赖
A依赖B,需要在A的pom.xml文件中添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包括:
依赖范围由强到弱的顺序是:compile>provided>runtime>test
原文:https://www.cnblogs.com/yft-javaNotes/p/10228772.html