Maven 入门

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(一些文档)
target
LICENSE.txt Project’s license
README.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>
http://maven.aliyun.com/nexus/content/groups/public/
http://central.maven.org/maven2/
<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学习总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值