- 浏览: 477781 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
白天看黑夜:
PDMReader实现pdm建模快速导出word,html文件 ...
powerDesigner PDM格式导出常见问题 -
小黄牛:
分布一个Dubbo分布式架构项目实战参考内容:http://w ...
dubbo学习 -
Emotion_小寳:
无意中看见了,给悦神赞一个!
openResty安装 -
bewithme:
zy116494718 写道bewithme 写道Ffmpeg ...
ffmpeg实例 -
zy116494718:
bewithme 写道Ffmpeg 这个类哪里来的?楼主你偷来 ...
ffmpeg实例
简介
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具 。 目前,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant 的项目管理工具(作为 make的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它元信息(如开发人员/拥有者、版本或站点主页)。 Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语,意为知识的积累,最早在Jakata Turbine项目中它开始被用来试图简化构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。 [1]
用maven的好处:我感觉最主要就是自动下载jar包和它所依赖的包,这样可以保证了多人开发时jar版本不同的问题。再就是文件结构清晰,java文件,资源文件,测试文件都分的很清楚。
特点
那么,Maven 和 Ant 有什么不同呢?在回答这个问题以前,我要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant 代表两个差异很大的工具,所以我将只说明这两个工具的等同组件之间的区别,如表 1 所示。[1] Maven是一个项目管理工具 ,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期 (Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件 (plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。 Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。 此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
常用命令
mvn archetype:create 创建Maven项目
mvn compile 编译源代码
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Respository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvn jetty:run 启动jetty服务
mvn tomcat:run 启动tomcat服务
推荐书籍
目前中文版对maven介绍比较全的书籍是《Maven实战》
环境配置
现在Java新架构的不断出现,例如Struts,Spring,Hibernate等,项目的配置文件的增多,给开发人员带来很大麻烦。在实际的开发当中,Myeclipse中的project越来越庞大,所依赖的第三方Jar包越来越多,这显得Project很臃肿,给项目管理带来了很大不便,尤其是在一些大型项目。为了解决上述问题,Apache开源组织发布了Maven[2] ,它适用于大的Java项目。
1. Maven有一个重要的文件"settings.xml“,这个文件来源于apache-maven-2.0.8/conf/ 下,要放在windows下, Win7和Winxp还是有点不一样 , Win7 ---C:\Users\用户名\.m2 , Winxp ---C:\Documents and Settings\用户名\.m2 。
2. 设置Maven的环境变量,基本上和设置Jdk环境变量相似,首先设置MAVEN_HOME,再加入Path 。
3. 修改”settings.xml” 文件,在这个文件中找到<localRepository></localRepository>这一行,修改为<localRepository>${MAVEN_HOME}/repo</localRepository>。这一行代表了Maven的本地Jar包仓库的位置,下面放的都是项目所用到的jar包。
其中 <servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
这个是配置私服,也就是远程服务器,当本地服务器不含有该JAR包时系统就自动去找,如果找到就从远程服务器上下载到本地服务器。如果是整个公司开发项目的话,最好配置私服,这样每个项目的使用者都可以从这里下载JAR包,保证了JAR包版本的统一且方便管理。
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<url>http://172.17.26.73:9091/nexus/content/groups/public</url> <!-- 这个是私服的地址-->
</mirror>
</mirrors>
如果所需要的JAR包是工程内部自己生成的供使用的,可以把它安装到本地仓库中,
mvn install:install-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar -Dfile=/path/to/file(JAR包路径)
如果需要把这些JAR包上传到私服上:
mvn deploy:deploy-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar -Dfile=/path/to/file -Durl=http://xxx.ss.com/sss.xxx -DrepositoryId=release-repo
也可以去私服相应的管理页面,如在这里相应为:http://172.17.26.73:9091/nexus/index.html
按如下步骤:
第一步:点Repositories
第二步:点3rd party
第三步:点Artifact Upload,然后GAV Definition中选 GAV Parameters,Group,Artifact,Version可以自己设置名字,一般与JAR包名称相同
第四步:选择JAR包所在位置,其中Classifier可以不填,如果填的话表示相同JAR包名称的不同版本(区别于Version,比如有的JAR包相对应有JDK1.4版本,有的有1.5版本)
第五步:添加JAR包,然后点UploadArtifact就上传成功了。上传成功后点Refresh就可以看到刚上传的JAR包
想看上传的JAR包的POM信息,可以点Browse Storage,然后找到相应的文件夹,右边就可以显示相应的POM信息
4.安装maven插件
Eclipse->help->Install New Software, 弹出安装对话框
点击 Add 按钮,按图示输入,确定
接下来按提示一直 next 下去,直到安装完毕。
5 点Windows-->Preference ,然后找到Maven,再找到Installations,点Add,找到Maven的安装位置,如果已经有则就 不用再添加
6. 建立Maven的project,File--new—other—Java Maven Project
1)选择WorkSpace路径,点下一步
2)Catalog选择Install, filter填webapp,再下面找到 maven-archetype-webapp, 点下一步
3)填写相应的GroupId,Artifact信息,Artifact一般为项目名称。version可以把后面的SNAPSHOT去掉,点FINISH
7 右键点项目,点属性--> project facets --> 在Project Facet 中的 Dynamic Web Module,Java,JavaScript三个前面打勾,其中Dynamic Web Module 选择 Version 版本为2.5,然后点OK。
8 设置部署程序集
右键点项目,点属性--> Deployment Assembly
此处列表是,部署项目时,文件发布的路径。
1,我们删除test的两项,因为test是测试使用,并不需要部署。
2,设置将Maven的jar包发布到lib下。
Add -> Java Build Path Entries -> Maven Dependencies -> Finish
9 向 maven 项目中添加 jar 包
maven 可以管理项目依赖的 jar 包,通过 groupID 、 artifactId 以及版本号可以唯一确定一个 jar 包。这样可以防止老式 Web 项目中 WEB-INF/lib 下 jar 包不一致的问题。并且 maven 还会自动下载添加进的 jar 包所依赖的 jar 包。
9.1 在pom.xml中添加所需要的jar包
使用Maven POM editor打开项目中的pom.xml文件,选择Dependencies,在Dependencies栏目点击Add进行,首先弹出一个搜索按钮,例如输入spring,就会自动搜索关于spring的jar包,或者点击pom.xml直接编辑pom.xml文件。这样可以直接copy过来 dependencies内容。如下图
当添加进入一个 jar 包后,有一些属性需要设置,最重要的就是 scope ,它有以下几种取值:
1. compile ,缺省值,适用于所有阶段,会随着项目一起发布。
2. provided ,类似 compile ,期望 JDK 、容器或使用者会提供这个依赖。如 servlet.jar 。
3. runtime ,只在运行时使用,如 JDBC 驱动,适用运行和测试阶段。
4. test ,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
5. system ,类似 provided ,需要显式提供包含依赖的 jar , Maven 不会在 Repository 中查找它。
点OK,就引入该JAR包了,在POM文件中可以看到相应的XML代码。
如果jar包或版本没有找到的话,可以去网站http://mvnrepository.com/ 查找。
10 POM概述
<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.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>xinhua</groupId> <artifactId>QuickRegister</artifactId> <packaging>war</packaging> <version>0.0.1</version> <name>QuickRegister Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 为POM设置编码格式 --> </properties> <dependencies> <!-- 建立依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <distributionManagement> <!-- 设置私服,id 对应 setting 中的私服 id --> <repository> <id>nexus</id> <name>nexus</name> <url>http://172.17.26.73:9091/nexus/content/groups/public</url> </repository> <snapshotRepository> <!-- 表示的是快照的地址 --> <id>nexus</id> <name>nexus</name> <url>http://172.17.26.73:9091/nexus/content/groups/public</url> </snapshotRepository> </distributionManagement> <build> <finalName>QuickRegister</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <!-- Run As Maven build : clean package 就可以发布到tomcat下了,并按照<warName>命名 --> <!-- 访问应用时,访问该地址即可:http://IP:Port/warName/ --> <warName>QuickRegister</warName> <outputDirectory>E:\tomcat6\apache-tomcat-6.0.35\webapps</outputDirectory> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.2</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version> <configuration> <url>http://localhost:8080/manager/html</url> <username>admin</username> <password>admin</password> </configuration> </plugin> </plugins> </build> </project>
11. 到现在为止,环境就算搞定了。
这时候右键点项目,点Run-->As ,会看到多出几个Maven的命令,如果需要的命令没有在里面,可以自己添加。
点Build...,然后在对话框中的Goals 中输入相应的Maven命令,如clean package
12.如果是Dynamic Web project项目转成Maven项目方法参见文章http://woshixushigang.iteye.com/blog/1290575
遇到过的问题
1 执行mvn tomcat:run时报错
java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet
问题出在servlet-api.jar上,tomcat部署springMVC项目时是不用这个包的,而用maven构建项目时需要,如果不引用该依赖就会不识别 HttpServletRequest等的类
解决方法是在maven引用servlet的依赖时,加上属性范围<scope>provided</scope>
依赖范围(scope) | 主源码classpath可用 | 测试源码classpath可用 | 会被打包 |
compile 缺省值 | TRUE | TRUE | TRUE |
test | FALSE | TRUE | FALSE |
runtime | FALSE | TRUE | TRUE |
provided | TRUE | TRUE | FALSE |
发表评论
-
idea报错:org/codehaus/plexus/util/StringUtils
2019-09-29 18:16 1040新装了idea新版本,Pom.xml报错org/codeh ... -
Idea常见问题
2017-03-31 16:08 5811)当idea中所有的jar包都无法访问的时候,可以去清除id ... -
apache配置域名转发
2016-03-31 15:23 6687apache配置域名转发,如访问80端口,当 ... -
ffmpeg实例
2015-08-27 16:21 4041FFmpeg是一套可以用来记录、转换数字音 ... -
activeMq实例
2015-08-26 15:55 1857JMS的全称是Java Message Service,即 ... -
nginx学习
2015-08-20 15:33 663一、nginx的启动,关闭,重启 启动 ./ ... -
openResty安装
2015-07-15 18:38 15766关于OpenResty(http://ope ... -
淘宝海量图片存储
2015-07-09 16:36 893【IT168 专稿】8月27日下午,在IT168系统架构师 ... -
海量图片的分布式存储
2015-07-09 09:48 937前言 针 对海量图片给网站带来的访问速度下降、性能压力 ... -
weblogic部署常见错误
2014-09-15 16:49 30801)java.lang.ArrayIndexOutOfBo ... -
git 学习
2014-08-18 16:30 1055git 一般步骤: ... -
linux常用命令
2013-06-25 10:40 1144常用命令: 1.当前位于哪个目录下面:pwd 2.查 ... -
session和cookie详解
2013-06-09 17:21 1611摘要:虽然session机制在web应用程序中被采用已经很长 ... -
apache+tomcat集群配置
2013-06-08 16:11 1240本文Apache+Tomcat集群配置 基于最新的Apa ... -
dubbo学习
2013-03-15 16:29 73246Dubbo是阿里巴巴SOA服务 ...
相关推荐
本教程"maven学习.zip"主要关注的是Maven插件的使用,下面将详细介绍Maven插件及其在实际开发中的应用。 **1. Maven插件的概念** Maven插件是Maven生态系统的核心组成部分,它们提供了各种功能,如编译源代码、打包...
** Maven学习资源整理** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。本资源包是为初学者和有经验的开发者准备的一系列Maven学习资料,旨在帮助你更好地理解和...
【 Maven学习极品:初学者的完美指南】 Maven,一个由Apache软件基金会开发的项目管理工具,是Java世界中不可或缺的一部分。它简化了构建过程,通过自动管理项目的依赖关系,使得开发者可以专注于编写代码,而不是...
【Maven学习指南】 Maven是一个强大的项目管理工具,源于Apache组织,专为基于Java平台的项目构建、依赖管理和项目信息管理而设计。它通过一个明确的项目对象模型(POM)来描述项目,利用其内置的项目生命周期和...
**Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过使用一个项目对象模型(Project Object Model,POM),XML格式的配置文件,定义了...
maven学习笔记maven学习笔记maven学习笔记
### Maven 学习文档知识点详解 #### 一、Maven简介 Maven 是一款非常流行的 Java 项目的构建管理和依赖管理工具。它可以帮助开发者自动化构建过程,简化项目管理和部署流程。通过使用 Maven,开发者可以轻松地管理...
Maven常用命令 Maven Maven学习
### Maven学习文档知识点详解 #### 一、Maven概述与安装目录介绍 Maven是一款流行的自动化构建工具,广泛应用于Java项目的构建过程中。它通过一种项目对象模型(Project Object Model,简称POM)来管理项目的构建...
maven学习文档,包含常见错误和docker的集成,包含多模块开发,不同的profile的开发,和一些插件基础属性说明
**Maven学习书籍** 《Maven实战》是一本专门针对Maven这一强大的Java项目管理和构建工具的书籍。作为国内首部Maven领域的专著,它深入浅出地讲解了Maven的核心概念、工作原理以及实际应用,是Java开发者进阶必备的...
**Maven学习手册** 在软件开发领域,Maven是一个强大的构建工具,主要用于Java项目管理。它简化了构建过程,依赖管理和项目的标准化。本手册旨在帮助开发者深入理解和有效地使用Maven,结合作者的实际项目经验,...
【Maven学习的基础资料】 Maven是一个强大的项目管理和综合工具,主要面向Java开发人员。它通过提供一个标准的项目生命周期框架,大大简化了项目的构建、文档生成、依赖管理、源码分布等任务。Maven的核心理念是...
maven学习资料
本资源“Maven学习必要插件”提供了一套预配置好的Maven环境,以便开发者可以快速投入到Maven的使用中。在本文中,我们将深入探讨Maven的核心功能、常用插件以及如何配置和使用这些插件。 1. **Maven核心功能** ...
通过本教程,读者将逐步学习到如何设置Maven环境、如何编写和理解POM文件、如何利用Maven的生命周期进行项目的构建和管理。以上内容不仅会为初学者提供Maven入门的全面指导,还会通过实际例子帮助开发者深入理解并...
**Maven 学习概要** Maven 是一个强大的项目管理工具,主要用于构建、管理和部署 Java 项目。它通过提供一套标准的项目对象模型(Project Object Model,POM)和生命周期概念,使得开发者能够轻松地处理项目的构建...
该资料主要讲maven的基础用法,安装和使用等。还有maven常常被使用到的一些命令和用法。注意事项等。
里面包含:两本maven电子书(《Maven权威指南中文版》和《Maven实战》)和两个文档(《在maven和jetty环境下eclipse的调试》、《基于Maven的Spring_+_Spring_MVC_+_Mybatis的环境搭建》),内容皆精品。