Maven
maven是一个自动化的项目构建管理工具
Maven 构建生命周期定义了一个项目构建跟发布的过程。
一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的:
1.Maven的作用
对第三方依赖库进行统一的版本管理
统一的目录结构
统一软件构建阶段
2. 使用Maven
2.1. 下载:
http://maven.apache.org/download.cgi
2.3. 配环境变量
配置MAVEN_HOME或者M2_HOME 配置Maven的目录可以看到"bin"目录
注:win10配环境变量:控制面板——>系统——>高级系统设置
系统变量:
MAVEN_HOME:D:\Maven3\apatche-maven-3.5.4
2.4.1. 配置本地仓库
在我们电脑的文件夹下是本地仓库,本地仓库的包是从中央仓库下载的。
例如:
2.4.2. 配置中央仓库的镜像
由于网络问题,阿里把中央仓库作了一个镜像,把中央仓库拷贝了一个备份这个备份叫“镜像”放到了国内
nexus-aliyun * Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public
2.4.3. JDK
jdk-1.8 true 1.8 1.8 1.8 1.8
3. Maven 仓库
在 Maven 的术语中,仓库是一个位置(place)。Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven 仓库有三种类型:
3.1. 本地(local)
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。Maven 本地仓库默认被创建在 %USER_HOME% 目录下要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
3.2. 中央(central)--默认的远程仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。中央仓库的关键概念:这个仓库由 Maven 社区管理。不需要配置。需要通过网络才能访问。要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。
3.3 远程(remote)
如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
3.4. Maven 依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中已被将来引用。
步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库已被将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
4. Maven 构建 Java 项目
4.1. 构建Java项目
Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用,我们将使用 maven-archetype-quickstart 插件。
Archetype是一个Maven项目模板工具包。原型被定义为原始模式或模型,从中创建所有其他相同类型的东西。
创建一个基于 maven 的 java 应用项目。
命令格式如下:
mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart
参数说明:
-DgourpId: 组织名,公司网址的反写 + 项目名称
-DartifactId: 项目名-模块名
-DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,创建一个简单的 Java
使用原型
要基于Archetype创建新项目,您需要调用mvn archetype:generate goal,如下所示:
mvn archetype :generate
Maven提供了几个Archetype工件:
原型ArtifactIds | 描述 |
maven-archetype-archetype | An archetype to generate a sample archetype project. |
maven-archetype-j2ee-simple | An archetype to generate a simplifed sample J2EE application. |
maven-archetype-mojo | An archetype to generate a sample a sample Maven plugin. |
maven-archetype-plugin | An archetype to generate a sample Maven plugin. |
maven-archetype-plugin-site | An archetype to generate a sample Maven plugin site. |
maven-archetype-portlet | An archetype to generate a sample JSR-268 Portlet. |
maven-archetype-quickstart | An archetype to generate a sample Maven project. |
maven-archetype-simple | An archetype to generate a simple Maven project. |
maven-archetype-site | An archetype to generate a sample Maven site which demonstrates some of the supported document types like APT, XDoc, and FML and demonstrates how to i18n your site. |
maven-archetype-site-simple | An archetype to generate a sample Maven site. |
maven-archetype-webapp | An archetype to generate a sample Maven Webapp project. |
4.2. 成功之后,去看看java文件
cd consumerBanking tree
mvn compile
4.4. 测试
mvn test
测试报告存放在 consumerBanking\target\surefire-reports 文件夹中
4.5. 打包
mvn package
在eclipse中打包:选择项目/POM.xml,右键 run as ,选择 maven install
接入如图
4.6. 运行
java -classpath classes com.bdqn.bank.App
在eclipse中运行:
第一种:选择项目/POM.xml,右键 run as ,选择 maven test
第二种:选择项目/POM.xml,右键 run as ,选择 maven build,输入compile,点run