nullMaven 使用简介Maven 使用简介穆彦利安装和使用安装和使用What?Why?What?Why?Maven是什么?
一个
项目管理
工程项目管理制度介绍工程项目管理课程设计政府投资项目管理意见建设工程项目管理合同工程项目管理培训总结
工具
有build、test、依赖管理等功能的项目管理工具
我们为什么使用maven?
对jar包的依赖管理是个很好的东西!
使用简单,因为有继承概念安装安装1、下载maven2.0.8(地址:http://maven.apache.org/download.html)
2、安装maven
1)解压缩maven到硬盘
2)设置环境变量,M2_HOME指向maven的主目录,PATH里面加入maven的bin目录。
3、测试maven安装
1)用下面的命令应该可以看到maven的版本号
mvn --version
2)用下面的命令应该可以看到mvn在下载文件
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
(下面的与maven的安装无关,与我们团队开发方式有益)
4、将setting.xml文件放在“Mave安装目录\conf”下。
5、为了使eclipse能找到maven仓库里面的jar包,需做如下操作:
在eclipse上依次点:windows-->preferences-->java-->build path-->classpath variables
新建一个classpath variables命名问M2_REPO,指向“
\.m2\repository”如何开始如何开始创建一个项目(主要是生了一个
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的目录结构和pom.xml,建完全可以不用这个命令—就像你知道maven以前那样建就可以了) ,命令行键入:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
把你这个工程用到的jar包,写到pom.xml文件中,格式如下:
org.springframework
spring
2.5
-->
导入到eclipse下进行编码:
mvn eclipse:eclipse:建立eclipse工程,运行这个命令之后,可以用eclipse的import功能建立一个project了
用eclipse的导入功能导入到eclipse里面
工程建立完成了,现在你可以编码了开始之后还可以做什么?开始之后还可以做什么?mvn compile: 编译java文件
mvn test: 运行单元测试
mvn package: 打包文件
mvn test-compile: 编译单元测试文件
mvn clean: 清除编译文件等
mvn eclipse:elipse:不只在建立工程的时候可以用哦,建立之后,如果你修改了项目的依赖关系,你也可以用这个命令来刷新依赖
mvn dependency:copy-dependenies:将依赖的jar复制到一起,便于我们知道这个项目都依赖了哪些jar
注意:
1、运行这些命令不需要配置任何文件
2、这些命令都可以单独执行,不需要顺序执行(test的前提是compile,但你运行mvn test的时候,不必先运行mvn compile)我们团队怎样使用?我们团队怎样使用?工程有团队中的一个人好放到cvs上,主要工作是配置pom.xml(一个人做就可以了,绝大部分人不需要这个这项工作)
大家从cvs上下载工程,然后运行mvn eclipse:eclipse,然后导入到eclipse成为eclipse下的一个项目,这样就可以开发了
大家在开发过程中,可以用mvn test进行测试,这个命令可以一次运行所有的单元测试。给我们团队带来哪些好处?给我们团队带来哪些好处?CVS上不用存jar包了,工程便小了—JAR保持到maven的仓库下了
大家的机器上的jar包少了,只是同样的jar包只保存一份就可以了,不用像以前那样每个工程都保存一份
大家建立新项目简单了,当我们的项目间有依赖关系的时候,maven管理了依赖关系
可以一个命令运行所有的单元测试了可用资源可用资源http://maven.apache.org:maven主站
http://repo1.maven.org/maven2/:maven主仓库
http://mavenrepository.com/:可以查询maven核心库中的jar,已经如何配置dependency
http://m2eclipse.codehaus.org/update/:eclipse的插件配置和管理配置和管理概念与思想概念与思想概念:
依赖:我们的项目用到了spring,那么我们的项目对spring项目(实际上是jar包)就有依赖,我们的项目用到了jcore,那么我们的项目对jcore就有依赖,maven2的依赖是可以传递的,即A依赖于B,B依赖于C,则无需指明A自然依赖于C。
仓库:集中存储我们依赖的项目(可以简单理解成jar包)的地方
本地仓库:运行maven的机器上的仓库,仓库里面的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
是根据需要自动从远程仓库下载下来的。
远程仓库:就是仓库服务器,仓库apache提供了一个很大的仓库。
私服:即我们自己建立仓库服务器,apache离我们太远,速度无法保障,所以我们在内部网络建一个。
继承:pom.xml是可以集成的,实际上所有的pom.xml都是集成与类似与java中object类一样的一个超级pom.xml。
整合:一个项目里面可以包含很多个子项目,可以整合的方式管理起来。
思想:
以可重用的思想建立项目
用标准规范的命名和结构来简化我们的工作,这也是agile推崇的思想
项目之间是有依赖关系的,依赖是可以传递的
很多功能都可以用插件来实现Maven2只有两个配置文件Maven2只有两个配置文件Setting.xml
与mvn运行环境相关的配置文件,团队提供统一配置
主要配置:本地jar文件存放目录、代理服务器、本地是私服等信息。
Pom.xml
与项目相关的配置文件
项目信息,依赖管理,编译和发布管理等
Setting.xmlSetting.xml可以在setting.xml文件中加入下面的内容来指定你的jar的存放路径,不指定则默认到“\.m2”下
D:\JSoft\apache-maven-2.0.8\repository
我们团队会提供类似与下面的配置,来指定本地私服:
local-ropository
localRepository
本地仓库
http://192.168.10.128:8080/maven2
Pom.xml最简结构(依赖是关键)Pom.xml最简结构(依赖是关键)
4.0.0
com.justinmobile
my-app
1.0-SNAPSHOT
my-webapp Maven Webapp
junit
junit
3.8.1
Pom.xml的关键项Pom.xml的关键项:组织标识,spring用的是springframework,我们就用com.justinmobile
:项目标识,如jcore的项目就叫jcore
:项目的版本号
:最终产品类型,如jar,war,ear,默认是jar
本项目依赖的项目Dependency例子 Dependency例子 log4j log4j 1.2.15 jar runtime false ant-contrib ant-contrib
Dependency下各元素解释Dependency下各元素解释* groupId, artifactId, version:描述了依赖的项目唯一标志
* type:相应的依赖产品包形式,如jar,war
* scope:用于限制相应的依赖范围,包括以下的几种变量:
* compile :默认范围,用于编译
* provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
* runtime:在执行时,需要使用
* test:用于test任务时使用
* system:需要外在提供相应得元素。通过systemPath来取得
* systemPath: 仅用于范围为system。提供相应的路径
* optional: 标注可选,当项目自身也是依赖时。用于连续依赖时使用
* exclusion:显示告诉maven不包括相关的依赖 如何继承如何继承将父项目的pom.xml写成: 4.0.0 org.codehaus.mojo my-parent 2.0 pom
将子项目的文件中加入:
org.codehaus.mojo my-parent 2.0 ../my-parent 如何整合多个项目如何整合多个项目主项目的加入modules
my-project1 my-project2
子项目建在主项目的目录内,并根据module名字命名文件夹怎样自定义目录结构?怎样自定义目录结构? ${basedir}/src/main/java ${basedir}/src/test/java ${basedir}/target/classes ${basedir}/target/test-classes ...
怎样与ANT结合使用?怎样与ANT结合使用?可以在maven里面直接写target或调用ant脚本,下面是调用ant脚本:
maven-antrun-plugin
deploy
run
如何建私服如何建私服普通私服:
找个web应用服务器就可以建了,把repository下面的内容复制进去就可以了
我们的私服如下:
http://192.168.10.128:8080/maven2,我们的主私服,用apache服务器建立的
http://192.168.10.128:8080/JMRepos,我们自己项目的仓库,jcore在里面,我们有可重用的项目都应该放这里。如何建私服如何建私服自动更新的私服:
到Apache网站下载maven-proxy-standalone-0.2-app.jar
将proxy.properties放在jar的同一个目录下
在proxy.properties里面关键内容修改:
#maven 的中心库
repo.repo1.maven.org.url=http://repo1.maven.org/maven2
repo.repo1.maven.org.description=maven.org
repo.repo1.maven.org.hardfail=false
repo.repo1.maven.org.cache.period=360000
repo.repo1.maven.org.cache.failures=true
运行:java -jar maven-proxy-standalone-0.2-app.jar proxy.properties
我们的私服如下:
http://192.168.10.128:9999/repository,辅助私服,主私服上还没有的东西可以通过找个私服自动从maven的仓库服务器上更新下来私服仓库维护私服仓库维护将maven管理的工程更新到仓库中:
1、在工程的pom.xml中指定仓库的配置信息,如:
localFileSystem
local file system
${deployRootDir}\JMRepos
file://D:\Program Files\Apache Group\Apache2\htdocs
2、运行mvn deploy私服仓库维护私服仓库维护将一个独立的jar包放入到仓库中:
1、按照规范创建仓库中的目录,如:\com\chinapay\chinapay\1.0
2、将jar包进行规范的命名,并放到建好的目录下,如:chinapay-1.0.jar
3、编写pom.xml文件,如:
4.0.0
com.chinapay
chinapay
1.0
chinapay
chinapay in justinmobile repository
4、编写生产sha1的ant脚步,如:
5、运行ant脚本Maven也有不足Maven也有不足Maven的不足Maven的不足测试
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
可读性差—有plugin支持,解决此问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
依赖的传递性是双刃剑,其忽略依赖传递性的功能又不是很方便。
推荐规范命名是好的,但对于那些已有的没有遵循规范的项目缺乏兼容性。如:Test类。
提供了方便却使我们少了控制权,如ant可以很容易做到文件的复制,maven去要依赖ant插件去做。ThanksThanks