Maven安装配置使用
Maven介绍
安装
1.下载: http://maven.apache.org/download.cgi
2.安装:
zip: $unzip apache-maven-3.3.9-bin.zip
tar: $tar xzvf apache-maven-3.3.9-bin.tar.gz
3.添加PATH:
在 /etc/paths 中加入: maven中的bin/
或执行 $export PATH=~/dev/tools/apache-maven-3.3.9/bin:$PATH
4.验证: $mvn -v
IntelliJ IDEA集成
安装maven插件 详细 https://www.jetbrains.com/help/idea/2016.2/maven.html
基本概念
maven项目的默认目录结构:
|
目录 |
目的 |
|
${basedir} |
存放 pom.xml和所有的子目录 |
|
${basedir}/src/main/java |
项目的 java源代码 |
|
${basedir}/src/main/resources |
项目的资源,比如说 property文件 |
|
${basedir}/src/test/java |
项目的测试类,比如说 JUnit代码 |
|
${basedir}/src/test/resources |
测试使用的资源 |
-----------
POM (Project Object Model)
一个项目所有的配置都放置在 POM 文件中,包括项目的类型、名字,管理依赖关系,定制插件的行为等等。
在POM中,groupId + artifactId + packaging + version 才称为项目标识,能唯一确定一个项目, 可用来指定项目所依赖的其他项目,插件,或者父项目。
格式一般如下: groupId:artifactId:packaging:version 比如: com.mycompanyname.helloworld: helloworld: jar: 1.0-SNAPSHOT
大项目一般会分成几个子项目。在这种情况下,每个子项目就会有自己的 POM 文件,然后它们会有一个共同的父项目。这样只要构建父项目就能够构建所有的子项目了。子项目的 POM 会继承父项目的 POM。另外,所有的 POM都继承了一个 Super-POM。Super-POM 设置了一些默认值,比如默认的目录结构,默认的插件等.
Maven 插件
maven整合了各种插件, 如Jar,Compiler,Surefire等。Jar 用来建立Jar文件, Compiler 插件用来编译源代码和单元测试代码。Surefire 插件运行单元测试。
编译后 的 classes 会放在 ${basedir}/target/classes 下面, JAR 文件会放在 ${basedir}/target 下面, test类 class 文件放在 target/test-classes/ 目录下面
maven 项目在默认情况下会产生 JAR 文件
Maven 生命周期
生命周期指项目的构建过程,它包含了一系列的有序的阶段 (phase),而一个阶段就是构建过程中的一个步骤。mvn package 是一个maven的生命周期阶段 (lifecycle phase)。
插件目标可以绑定到生命周期阶段上。一个生命周期阶段可以绑定多个插件目标。当 maven 在构建过程中逐步的通过每个阶段时,会执行该阶段所有的插件目标。
maven 能支持不同的生命周期,但是最常用的是默认的Maven生命周期。如果你没有对它进行任何的插件配置或者定制的话,那么命令 mvn package 会依次执行默认生命周期中直到包括 package 阶段前的所有阶段的插件目标:
process-resources 阶段:resources:resources
compile 阶段:compiler:compile
process-classes 阶段:(默认无目标)
process-test-resources 阶段:resources:testResources
test-compile 阶段:compiler:testCompile
test 阶段:surefire:test
prepare-package 阶段:(默认无目标)
package 阶段:jar:jar

Maven 依赖管理
在 POM 中,依赖关系是在 dependencies 部分中定义的。比如:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
因为被依赖的 jar 文件会有自己的依赖关系。那么我们是不是需要把那些间接依赖的 jar 文件也都定义在POM中呢?答案是不需要,因为 maven 提供了传递依赖的特性.
所谓传递依赖是指 maven 会检查被依赖的 jar 文件,把它的依赖关系纳入最终解决的依赖关系链中。针对上面的 junit 依赖关系,如果你看一下 maven 的本地库: ~/.m2/repository/junit/junit/3.8.1/ ,
发现 maven 不但下载了 junit-3.8.1.jar,还下载了它的 POM 文件。这样 maven 就能检查 junit 的依赖关系,把它所需要的依赖也包括进来。
在 POM 的 dependencies 部分中,scope 决定了依赖关系的适用范围。我们的例子中 junit 的 scope 是 test,那么它只会在执行 compiler:testCompile and surefire:test 目标的时候才会被加到 classpath 中,在执行 compiler:compile 目标时是拿不到 junit 的。
我们还可以指定 scope 为 provided,意思是 JDK 或者容器会提供所需的jar文件。比如说在做web应用开发的时候,我们在编译的时候需要 servlet API jar 文件,但是在打包的时候不需要把这个 jar 文件打在 WAR 中,因为servlet容器或者应用服务器会提供的。
scope 的默认值是 compile,即任何时候都会被包含在 classpath 中,在打包的时候也会被包括进去。
Maven 库
当第一次运行 maven 命令的时候,会从 maven 默认的远程库(http://repo1.maven.org/maven2) 下载 maven 的核心插件和可供下载的 jar 文件。
但是不是所有的 jar 文件都是可以从默认的远程库下载的,比如说我们自己开发的项目。这个时候,有两个选择:要么在公司内部设置定制库,要么手动下载和安装所需的jar文件到本地库。
本地库是指 maven 下载了插件或者 jar 文件后存放在本地机器上的拷贝。在 Linux 上,它的位置在 ~/.m2/repository,在 Windows XP 上,在 C:\Documents and Settings\username\.m2\repository ,在 Windows 7 上,在 C:\Users\username\.m2\repository。当 maven 查找需要的 jar 文件时,它会先在本地库中寻找,只有在找不到的情况下,才会去远程库中找。
运行下面的命令能把项目安装到本地库: $mvn install
一旦一个项目被安装到了本地库后,其他的项目就可以通过 maven 坐标和这个项目建立依赖关系。
比如如果我现在有一个新项目需要用到 helloworld,那么在运行了上面的 mvn install 命令后,我就可以如下所示来建立依赖关系:
<dependency>
<groupId>com.mycompany.helloworld</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
依赖Jar查找: http://search.maven.org/
标准目录结构:
src
-main
–bin 脚本库
–java java源代码文件
–resources 资源库,会自动复制到classes目录里
–filters 资源过滤文件
–assembly 组件的描述配置(如何打包)
–config 配置文件
–webapp web应用的目录。WEB-INF、css、js等
-test
–java 单元测试java源代码文件
–resources 测试需要用的资源库
–filters 测试资源过滤库
-site Site(一些文档)
target
LICENSE.txt Project’s license
README.txt Project’s readme
工程根目录下就只有src和target两个目录
target是有存放项目构建后的文件和目录,jar包、war包、编译的class文件等。
target里的所有内容都是maven构建的时候生成的
使用maven构建项目
1.新建项目:
~$mvn archetype:generate -DgroupId=com.mycompany.helloworld -DartifactId=helloworld -Dpackage=com.mycompany.helloworld -Dversion=1.0-SNAPSHOT
archetype:generate 目标会列出一系列的 archetype 让你选择。 Archetype 可以理解成项目的模型。 Maven 为我们提供了很多种的项目模型,包括从简单的 Swing 到复杂的 Web 应用。我们选择默认的 maven-archetype-quickstart
maven 的 archetype 插件建立了一个 helloworld 目录,这个名字来自 artifactId 。这个目录下面的 pom.xml 用于描述项目,配置插件和管理依赖关系。
源代码和资源文件放在 src/main 下面,而测试代码和资源放在 src/test 下面。
2.构建
~$cd helloworld && mvn package
3.运行
~$java -cp target/helloworld-1.0-SNAPSHOT.jar com.mycompany.helloworld.App
参考文档:
http://maven.apache.org/configure.html
http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html
附:
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror> <!-- 中央仓库1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror> <!-- 中央仓库2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
---
Maven安装配置使用的更多相关文章
- Maven学习第2期---Maven安装配置
一.Maven介绍 1.1 何为Maven Maven这个词可以翻译为"知识的积累",也可以翻译为"专家"或"内行".Maven是一个跨平台 ...
- Maven安装配置操作
1)下载maven安装包并解压: 2)环境变量配置: 3)编辑环境变量Path,追加%MAVEN_HOME%\bin; 4)maven安装配置后进行dos命令检查:在cmd中输入 mvn -v 5)配 ...
- 转载maven安装,配置,入门
转载:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html 本书代码下载 大家可以从我的网站下载本书的代码:http://ww ...
- JeePlus:Maven 安装配置
ylbtech-JeePlus:Maven 安装配置 1.返回顶部 1. Maven 安装配置 1 Maven 由于Maven依赖Java运行环境,因此使用Maven之前需要配置Java的运行环境.下 ...
- Maven安装配置及其插件m2e(Eclipse Indigo 和 MyEclipse8.5)的安装配置
Maven安装配置及其插件m2e(Eclipse Indigo 和 MyEclipse8.5)的安装配置 系统:Windows7 使用软件: Maven3.0.3 + Eclipse Indigo ...
- 第一章 Maven 安装配置
Maven基于(POM)项目对象模型,通过一小段描述信息来管理项目的构建.文档.和报告的项目管理软件,类似于php 的管理构建工具composer. 有关详细的Maven学习,可以参考学习https: ...
- Spring Boot入门样例-001-Java和Maven安装配置
Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...
- maven安装配置
1.到官网下载maven http://maven.apache.org/download.html 2.解压后解压到任意文件路径 本地解压的位置:C:\soft\apache-maven-3.3.9 ...
- maven安装配置(myeclipse)(一)
欢迎转载:http://www.cnblogs.com/shizhongtao/p/3374130.html 对于我来说,maven主要用于jar包的管理,避免项目中频繁更换jar的版本,以及网上搜索 ...
- Jenkins2.32.1+svn+maven安装配置与构建部署
这两天学习了一下持久化集成工具Jenkins,在自己的本地搭建一个简单的Jenkins环境. 使用环境:Windows64系统,JDK1.8,eclipse,svn(Windows版本VisualSV ...
随机推荐
- Redis性能测试
Redis 性能测试 Redis 性能测试是通过同时执行多个命令实现的.Redis性能测试主要是通过src文件夹下的redis-benchmark来实现(Linux系统下) 语法 redis 性能测试 ...
- idea使用心得(3)-重构初探
上一篇idea心得中,介绍了快捷键的用法.其中提及了重构神器Alt+Ctrl+Shift+T , 当时只是稍稍提及,本文重点在idea提供的重构选项.后续会有<重构,改善既有代码的设计>的 ...
- [原创]如何在Parcelable中使用泛型
[原创]如何在Parcelable中使用泛型 实体类在实现Parcelable接口时,除了要实现它的几个方法之外,还另外要定义一个静态常量CREATOR,如下例所示: public static cl ...
- wp8.1 VS2013部署手机发生 DEP6100 6200错误
wp8.1 VS2013部署手机发生 DEP6100 6200错误 ,提示未发现手机. 可能是数据线有问题 建议更换 本人的电脑有很多次,提示DEP6100 6200错误,每一次都需要重做系统.. 然 ...
- LintCode Longest Common Substring
原题链接在这里:http://www.lintcode.com/en/problem/longest-common-substring/# 题目: Given two strings, find th ...
- chrome新版安装flash控件失败解决方法
今天chrome打开后出现插件过期,之后更新一直安装失败 度娘找到一个方法: 1.下载flash最新版for chrome : https://fpdownload.macromedia.com/pu ...
- 原生js拖拽
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- AD10的PCB设计规则
PCB布线规则,布板需要注意的点很多,但是基本上注意到了下面的这此规则,LAYOUT PCB应该会比较好,不管是高速还是低频电路,都基本如此. 1. 一般规则 1.1 PCB板上预划分数字.模拟.DA ...
- postgresql修炼之道学习笔记(1)
好好学习吧. 本笔记 仅作为摘要记录 前两章,主要是数据库对比和安装等. 对比,就比多说了,总是和别人比较,会显得自己身价低,呵呵. 安装也有很多文章,不多说. 第二章提到了一些简单的配置, 其在 d ...
- PAT线性结构_一元多项式求导、按给定步长反转链表、出栈序列存在性判断
02-线性结构1. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过100 ...