Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念。
Maven简化和标准化项目建设过程。处理编译、分配、文档、团队协作和其他任务的无缝连接,增加可重用性并负责建立相关的任务。
最强大的功能就是能够自动下载项目依赖库。
如果公司建立防火墙,且使用HTTP代理服务器来阻止用户直接连接到互联网,则Maven将无法下载任何依赖。因此需在Maven的配置文件中设置代理服务器:settings.xml.
找到{M2_HOME}/conf/settings.xml, 并把你的代理服务器信息配置写入。
代码块
XML
取消注释代理选项,填写你的代理服务器的详细信息;保存文件,重新启动(非必需)。
4、Maven本地资源库
Maven本地资源库:用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。Mac OS默认为~/.m2目录文件夹
a. 更新Maven的本地库:在{M2_HOME}\conf\setting.xml, 更新 localRepository 到其它名称
代码块
XML
D:\software\yiibai.com\apache-maven\repository
b. 保存文件,执行命令(其实不知道是干啥的,保存的又是啥)
mvn archetype:generate -DgroupId=com.yiibai -DartifactId=NumberGenerator -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
5、Maven中央资源库
Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2/ 查找下载。
Maven中心储存库网站已经改版本,目录浏览可能不再使用。这将直接被重定向到 http://search.maven.org/。
6、Maven添加远程存储库
如:为得到java.net的依赖,在pom.xml文件声明远程仓库。
代码块
XML
java.net
https://maven.java.net/content/repositories/public/
添加JBoss远程仓库:
代码块
XML
JBoss repository
http://repository.jboss.org/nexus/content/groups/public/
7、Maven依赖机制
自动下载所有必需的依赖库,并保持版本升级。搜索库顺序:本地仓库——中央存储库——远程仓库。
如:想使用 Log4j 作为项目的日志:
传统方式 |
Maven方式 |
---|---|
访问http://logging.apache.org/log4j/ 下载Log4j的jar库 复制jar到项目类路径 手动将其包含到项目的依赖 所有管理需要一切由自己做 |
知道log4j的Maven坐标(gruopId、artifactId、version) 自动下载log4j的1.2.14版本库(若无version标签,则当有新版本时自动升级库) 声明Maven的坐标转换成pom.xml文件 当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库
|
代码块
XML
log4j
log4j
1.2.14
注:GroupID是项目组织唯一的标识符,实际对应Java的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
8、定制库到Maven本地资源库(如kaptcha:第三方java库,用来生成“验证码”的图片)(jar入库方式)
(1)下载 “kaptcha”,将其解压缩并将 kaptcha-version.jar 复制到其他地方,比如:C盘
(2)执行命令:mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
“kaptcha” jar被复制到 Maven 本地存储库
(3)在pom.xml 中声明 kaptcha 的坐标
9、Maven外部依赖
(1)添加lib文件夹到src文件夹
(2)复制任何的jar到lib文件夹。如:ldapjdk.jar
(3)配置pom.xml。(指定 groupId 同样作为库的名称;指定 artifactId 同样作为库的名称;指定范围的系统;指定相系统项目的位置)
10、Maven使用传递性依赖机制
三、使用Maven构建项目
1、Maven项目模板
Maven 使用 Archetype 概念为用户提供不同类型的项目模板;而Archetype 是一个 Maven 插件,其任务是按照其模板来创建一个项目结构。
命令:mvn archetype:generate
2、使用Maven创建java项目
(1)使用命令行或终端:在要创建java项目的文件夹下执行:
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
如果忽视 archetypeArtifactId 选项,一个巨大的 Maven 模板列表将列出。
(2)自己手动参照maven目录结构创建文件夹
src/main/java |
Application/Library sources |
src/main/resources |
Application/Library resources |
src/main/resources-filtered |
Application/Library resources which are filtered. (Starting with Maven 3.4.0, not yet released.) |
src/main/filters |
Resource filter files |
src/main/webapp |
Web application sources |
src/test/java |
Test sources |
src/test/resources |
Test resources |
src/test/resources-filtered |
Test resources which are filtered by default. (Starting with Maven 3.4.0, not yet released.) |
src/test/filters |
Test resource filter files |
src/it |
Integration Tests (primarily for plugins) |
src/assembly |
Assembly descriptors |
src/site |
Site |
LICENSE.txt |
Project's license |
NOTICE.txt |
Notices and attributions required by libraries that the project depends on |
README.txt |
Project's readme |
3、Eclipse项目
(1)终端进入到项目中,执行命令:mvn eclipse:eclipse,然后导入到Eclipse IDE中
4、Maven打包
参考pom.xml文件,包元素定义包应该输出什么。
代码块
XML
4.0.0
com.yiibai
NumberGenerator
jar
1.0-SNAPSHOT
终端执行mvn package
4、Maven创建Web项目
(1)执行命令:mvn archetype:generate -DgroupId=com.yiibai -DartifactId=CounterWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
mvn eclipse:eclipse -Dwtpversion=2.0
(2)mvn site
四、Maven-项目
1、Maven构建项目
打开控制台,进入到 pom.xml 文件所放的项目文件夹,执行mvn package
2、Maven清理项目
在基于Maven的项目中,很多缓存输出在“target”文件夹中。故建立项目部署时,执行mvn clean清理所有缓存的输出
3、Maven运行单元测试
运行整个单元测试:mvn test
运行单个测试(TestApp2):mvn -Dtest=TestApp2 test
4、将项目安装到本地资源库
mvn install(当“install”在执行阶段,上述所有阶段 “validate“, “compile“, “test“, “package“, “integration-test“, “verify” 阶段, 包括目前的“install”阶段将被执行有序。)建议运行mvn clean install
五、Maven快照
快照(SNAPSHOT )是一个特殊版本,指出目前开发拷贝。不同于常规版本,Maven 每生成一个远程存储库都会检查新的快照版本。
附录:
maven命令:
mvn archetype:create 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类
maven仓库资源查询:http://mvnrepository.com/