解压缩Maven文件夹
配置一个M2_HOME和MAVEN_HOME环境变量,指向变量的Maven的安装目录。
配置PATH环境变量。变量添加%MAVEN_HOME%/bin。
通过Maven文件目录下/confi/setting.xml修改本地仓库地址(localRepository标签)
由于国内你懂的,需要配置mirrors配置国内云
当你创建项目时,Maven根据配置文件pom.xml查询jar包。查询规则是:
2-1:pom.xml配置一个包的配置方法可以通过该网站搜索对应包的配置信息(http://search.maven.org/)
3-1:如下例子:
POM.xml文件中
注意:org.jvnet.localizer并不存在于中央仓库,这时我们需要制定远程仓库:
|
传递依赖的出现:当A依赖B,而B依赖于C,(A与C是间接依赖;A与B是直接依赖)。当然有可能会依赖出很多不必要的可选依赖。从而导致依赖项越来越多。本地仓库被挤爆了。
那么当我们使用Maven构建项目的时候,我们只需要在POM中指定直接依赖关系。MAVEN会自动处理其他间接依赖关系。
MAVEN会自动引入间接依赖。那么问题来了一个依赖项有多个版本。那么MAVEN如何选择呢?
“MAVEN会选择最近的那一个“ 下面通过一个例子说明。
依赖关系如下: (1)A->B->C->D 2.0 (2)A->E->D1.0 (A直接依赖B、E;E依赖D1.0,而B依赖C,C又依赖D2.0). 那么此时MAVEN如何选择? (1)中有两层间接依赖。(2)中有一层间接依赖。此时MAVEN会选择D1.0,因为(2)比较近 |
(1)依赖管理是“依赖信息”集中化处理。类似java中的子类继承父类
(2)当你有多个项目用到一些相同的依赖项目,可以将这些共同的依赖项放置到一个公共的POM.xml文件中。然后在子pom.xml中引用该公共的pom.xml文件。
参照MAVEN官方代码段
6. import
你知道java是不能多继承的,maven也是。如果这样,似乎不太强大,所以maven可以让你用import从别的project中导入依赖。
有些包的部分功能我们是不使用的。然而,这部分功能又恰好依赖一个包,
所以我们可以排除这个包。
例子: 第五行到第十行就是。
若 D是C的可选依赖,D是E的可选依赖,那么没有D的时候,C和E还是可以工作的。那么可以在C和E里面可以指定D为可选。
上面的XML代码片段被称为“Maven坐标”,如果你需要 JUnit 的 jar,你需要找出其相应的 Maven 坐标。
它适用于所有其他的依赖,如Spring,Hibernate,Apache 普通的等,只要到Maven中心储存库,并找出哪些是依赖正确的 Maven 坐标。
下面列出了default、clean和site生命周期的所有构建阶段,这些阶段按照指定的顺序执行。
clean生命周期
执行阶段 |
描述说明 |
pre-clean |
在实际的项目清理之前执行所需的过程 |
clean |
删除前一个构建生成的所有文件 |
post-clean |
执行完成项目清理所需的过程 |
Default生命周期
执行阶段 |
描述说明 |
validate |
验证项目是正确的,所有必要的信息都是可用的。 |
initialize |
初始化构建状态,例如设置属性或创建目录。 |
generate-sources |
生成包含在编译中的任何源代码。 |
process-sources |
处理源代码,例如过滤任何值。 |
generate-resources |
生成包含在包中的资源。 |
process-resources |
将资源复制并处理到目标目录中,准备打包。 |
compile |
编译项目的源代码。 |
process-classes |
从编译后生成生成的文件,例如在Java类上执行字节码增强。 |
generate-test-sources |
生成包含在编译中的任何测试源代码。 |
process-test-sources |
处理测试源代码,例如过滤任何值。 |
generate-test-resources |
为测试创建资源。 |
process-test-resources |
将资源复制并处理到测试目标目录中。 |
test-compile |
将测试源代码编译到测试目标目录 |
process-test-classes |
从测试编译后post-process生成文件,例如在Java类上执行字节码增强。对于Maven 2.0.5和以上。 |
test |
使用合适的单元测试框架运行测试。这些测试不应该要求打包或部署代码。 |
prepare-package |
在实际包装前执行必要的准备工作。这通常会导致包的一个未打包的、经过处理的版本。(Maven 2.1及以上) |
package |
使用已编译的代码,并将其打包成可部署格式,例如JAR。 |
pre-integration-test |
执行集成测试之前需要执行的操作。这可能涉及到设置所需的环境等问题。 |
integration-test |
在需要集成测试的环境中,处理并部署包。 |
post-integration-test |
执行集成测试后所需要的操作。这可能包括清理环境。 |
verify |
运行任何检查以验证包是否有效,并满足质量标准。 |
install |
将该包安装到本地存储库中,作为本地其他项目的依赖项。 |
deploy |
在集成或发布环境中完成,将最终包复制到远程存储库中,以便与其他开发人员和项目共享。 |
Site生命周期
执行阶段 |
描述说明 |
pre-site |
在实际的项目站点生成之前执行过程 |
site |
生成项目的站点文档 |
post-site |
执行确定站点生成的过程,并为站点部署做好准备 |
site-deploy |
将生成的站点文档部署到指定的web服务器 |
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn eclipse:eclipse
(当修改了pom.xml时,也可再调用这个方法进行更新)
mvn package
mvn archetype:generate -DgroupId=com.yiibai -DartifactId=CounterWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
mvn eclipse:eclipse -Dwtpversion=2.0
(注意,此选项 -Dwtpversion=2.0 告诉 Maven 将项目转换到 Eclipse 的 Web 项目(WAR),而不是默认的Java项目(JAR)。)为方便起见,声明 maven-eclipse-plugin,并配置wtpversion 来避免输入参数 -Dwtpversion=2.0。现在,每次使用 mvn eclipse:eclipse,Maven将这个项目导入转换为 Eclipse Web 项目。
POM.xml文件如下:
CounterWebApp
org.apache.maven.plugins
maven-eclipse-plugin
2.9
true
false
2.0
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
${jdk.version}
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
/CounterWebApp
Maven有很多模板
通常情况下,我们只需要使用下面的两个模板:
maven-archetype-webapp – Java Web Project (WAR)
maven-archetype-quickstart – Java Project (JAR)
基于maven项目打开控制台,进入pom.xml文件所放的项目文件夹,运行
mvn package
你运行“mvn package”命令,它会编译源代码,运行单元测试和包装这取决于在pom.xml文件的“packaging”标签。 例如,
1. If “packaging” = jar, 将您的项目打包成一个“jar”文件,并把它变成你的目标文件夹。
File : pom.xml
4.0.0 com.yiibai Maven Example jar ...
2. 如果 “packaging” = war,将您的项目打包成“war”文件,并把它变成目标文件夹。
File : pom.xml
4.0.0 com.yiibai Maven Example war ...
在基于Maven的项目中,很多缓存输出在“target”文件夹中。如果想建立项目部署,必须确保清理所有缓存的输出,从面能够随时获得最新的部署。
要清理项目缓存的输出,发出以下命令:
mvn clean
部署进行生产
要部署您的项目进行生产,它总是建议使用 “mvn clean package“, 以确保始终获得最新的部署
通过Maven运行单元测试,发出此命令:
mvn test
//这样会运行项目中所有的test
若要运行某一个test
mvn -Dtest=类名 test
在Maven中,可以使用“mvn install”打包项目,并自动部署到本地资源库,让其他开发人员使用它。
mvn install
注意,
当“install”在执行阶段,上述所有阶段 “validate“, “compile“, “test“, “package“, “integration-test“, “verify” 阶段, 包括目前的“install”阶段将被执行有序。
一个Java项目,具有以下 pom.xml 文件
File : pom.xml
4.0.0
com.yiibai.core
yiibai-core
jar
99
yiibai-core
http://maven.apache.org
junit
junit
4.4
test
基于以上pom.xml文件,在“mvn install”被执行,它会打包项目为“yiibai-core-99.jar”文件,并复制到本地存储库。
警告 建议运行“clean”和“install”在一起,让您能始终部署最新的项目到本地存储库。
mvn clean install
在Maven中,可以使用“mvn site”,为您的项目信息生成文档站点。
mvn site
生成的网站是在项目的“target/site”文件夹中。
【Maven】Eclipse 使用Maven创建Java Web项目