maven
什么是maven?
maven翻译为“专家”,“内行”,maven是aapache下的一个纯java开发的开源项目,他是一个项目管理工具,使用maven对Java项目进行构建、依赖管理。当前使用maven的项目在持续增长。
##基本原理
Maven的基本原理很简单,采用远程仓库和本地仓库以及一个pom.xml,将pom.xml中定义的jar文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的jar,同一个版本的jar只需下载一次,而且避免每个应用都去拷贝jar。
使用maven的好处?
- 一步构建
maven对项目构建过程进行标准化,通过一个命令即可完成构建过程。 - 依赖管理
maven工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不宜出错。 - maven的跨平台,可在window/linux上使用。
- maven遵守规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构建项目。
下载安装
网址:(点这里)mavn下载
版本为maven3.3.9版本
解压导一个不含有中文和空格的目录中。
目录
bin目录:mvn.bat\mvnDebug.bat(可执行文件)
boot目录:maven运行需要的类加载器
conf目录:setting.xml整个maven工具核心配置文件
lib目录:maven运行依赖的jar包
需要配置环境变量
此处省略
注意:电脑上需要安装java环境,安装jdk1.7版本
检查是否配置成功
打开命令窗口,输入
mvn-v
本地仓库
- 创建本地仓库
用来存储从远程仓库或者中央仓库下载的插件和jar包,项目使用一些插件或者jar包,优先从本地仓库查找。
在本地新建一个文件夹,作为本地仓库
- 配置本地仓库
将本地仓库的位置放到setting的内
远程仓库
如果本地需要插件或者jar包,本地仓库没有,默认区远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
- 使用阿里云的远程仓库
连接:阿里云的仓库:http://maven.aliyun.com/mvn/view
- 在setting中配置远程仓库
找到标签,复制以下代码:
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
使用黑窗口来模仿idea来新建项目
(不影响配置,此操作可有可无,只是秀一下。)
-其中com.aaa是类似于项目的包名
-其中firstmavenproj相当于项目名
mvn archetype:generate -DgroupId=com.aaa -DartifactId=firstmavenproj -DarchetypeArtifactId=maven-archetype-webapp
idea中配置
目标:在idea中构建我的第一个mevan项目
第一步:
在File–>setting–>Build,Exception,Deployment–>Build Tools–>Maven下的
Maven home directory:maven的安装目录,bin的上一目录
User setting file:maven的安装目录,conf/setting.xml
Local repository:本地仓库的位置(配置Maven home directory,工具会自动选择)
第二步:
配置完成后新建一个model
注意:此处必须选择小对勾,创建web工程然后找到底下的webapp结尾的jar包。
点击Next后
初步项目已经创建完成。
第三步:
配置pom.xml文件
点击import changes引入改变
初始代码
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aaa</groupId> <!--项目名称,定义为组织名+项目名,类似包名-->
<artifactId>myFirstMaven</artifactId> <!--模块名称-->
<version>1.0-SNAPSHOT</version> <!--当前项目版本号,SNAPSHOT为快照版本即非正式版本,release为正式发布版本-->
<packaging>war</packaging> <!--打包类型:jar:执行package会打成jar包
war:执行package会打成war
pom:用于maven工程的继承,通常父工程设置为pom-->
<name>myFirstMaven Maven Webapp</name> <!--用户描述项目的名称,无关紧要的东西,可选-->
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url> <!--应该是只是写明开发团队的网站,无关紧要,可选-->
<!--声明一些常量。如:<file.encoding>UTF-8<file.encoding>引用时 ${file.encoding}-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!--依赖关系:(依赖关系是POM的重要部分)-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--plugin:声明项目中所使用的插件,如热部署时,需要的tomcat插件(放build里面)-->
<build>
<finalName>myFirstMaven</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>