Maven 入门

来源:互联网 发布:python简明中文教程 编辑:程序博客网 时间:2024/06/06 21:28

1.Maven是做什么的

Maven是一个项目管理和构建自动化的工具。但对于我们编码来说,我们更关心它的项目构建功能。

1.1 Maven的项目结构

src -main  –bin 脚本库  –java java源代码文件  –resources 资源库,会自动复制到classes目录里  –filters 资源过滤文件  –assembly 组件的描述配置(如何打包)  –config 配置文件  –webapp web应用的目录。WEB-INF、css、js等 -test  –java 单元测试java源代码文件,项目的测试类,比如jUint代码  –resources 测试需要用的资源库  –filters 测试资源过滤库 -site Site(一些文档)targetLICENSE.txt Project’s licenseREADME.txt Project’s readme工程根目录下就只有src和target两个目录target是有存放项目构建后的文件和目录,jar包、war包、编译的class文件等。target里的所有内容都是maven构建的时候生成的

1.2 pom.xml

pom.xml文件是Maven的核心

pom意思就是project object model。pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml

刚构建的pom.xml说明

<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>cn.luxh.app</groupId>  <artifactId>my-app</artifactId>  <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>  <name>my-app</name>  <url>http://maven.apache.org</url>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>  </dependencies></project>
<project>      pom文件的顶级节点<modelVersion>   object model版本,对Maven2和Maven3来说,只能是4.0.0 <groupId>      项目创建组织的标识符,一般是域名的倒写<artifactId>    定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目<packaging>      打包的方式,有jar、war、ear等<version>       当前项目的版本,SNAPSHOT,表示是快照版本,在开发中<name>        项目的名称<url>        项目的地址<dependencies>   构建项目依赖的jar<description>    项目的描述

其中由groupId、artifactId和version唯一的确定了一个项目坐标

2. 构建Maven工程

2.1 简单的项目构建

使用Maven命令行构建工程很重要,最简单的就是根据标准模板创建,有时还需根据不同的项目,添加不同的命令。

关于maven项目的生成命令:
create is deprecated in maven 3.0.5 and beyond,在maven3.0.5以上版本舍弃了create,使用generate生成项目

标准创建模板

mvn archetype:create -DgroupId=com.codeline.commons \-DartifactId=codelineCommons

第一次创建时,还需下载对应插件
如第一次构建scala工程。

mvn archetype:generate -DarchetypeGroupId=org.scala-tools.archetypes \-DarchetypeArtifactId=scala-archetype-simple \-DremoteRepositories=http://scala-tools.org/repo-releases \-DgroupId=com.xxxx.bigdata.spark.app \-DartifactId=logs-analyzer \-Dversion=1.0

2.2 构建多模块项目

关于通过maven构建多模块项目参考此篇博客:
http://www.cnblogs.com/xdp-gacl/p/4242221.html

3. Maven资源仓库

3.1 maven仓库收集

<mirror>         <id>mirrors.ibiblio.org</id>         <name>mirrors.ibiblio.org</name>         <url>http://mirrors.ibiblio.org/maven2/</url>         <mirrorOf>central</mirrorOf>     </mirror> <mirror>     <id>nexus-tmatesoft</id>     <mirrorOf>central</mirrorOf>     <name>Nexus tmatesoft</name>     <url>http://maven.tmatesoft.com/content/groups/public/</url> </mirror>  <mirror>     <id>Central</id>     <url>http://repo1.maven.org/maven2</url>     <mirrorOf>central</mirrorOf> </mirror> <mirror>    <id>internal</id>     <mirrorOf>*</mirrorOf>     <name>local.</name>     <url>http://uk.maven.org/maven2/</url> </mirror>

3. Maven 的生命周期

在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:

  • validate,验证工程是否正确,所有需要的资源是否可用。
  • compile,编译项目的源代码。
  • test-compile,编译项目测试代码。
  • test,使用已编译的测试代码,测试已编译的源代码。
  • package,已发布的格式,如jar,将已编译的源代码打包。
  • integration-test,在集成测试可以运行的环境中处理和发布包。
  • verify,运行任何检查,验证包是否有效且达到质量标准。
  • install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
  • deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的
  • repository,使得其他的开发者或者工程可以共享。
  • generate-sources,产生应用需要的任何额外的源代码,如xdoclet。

如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。

参考博客:
http://blog.csdn.net/edward0830ly/article/details/8748986

系统总结Maven的博客

7天学会Maven

Maven学习总结

0 0