初识Maven

初识Maven:

 

一、什么是Maven?

        Maven是java开发的,Maven是一个项目管理和综合工具。Maven不仅是构建工具,还是一个依赖管理工具项目管理工具,它提供了中央仓库,能帮我自动下载构件(jar包)

二、Maven下载、安装

  下载地址http://maven.apache.org/download.cgi

 下载完成后,得到一个压缩包,解压,可以看到maven的组成目录

  

 Maven目录分析

  • bin:含有mvn运行的脚本
  • boot:含有plexus-classworlds类加载器框架
  • conf:含有settings.xml配置文件
  • lib:含有Maven运行时所需要的java类库
  • LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

Maven安装

1、首先要确保电脑上已经安装了JDK(要jdk 1.6+的版本),配置好JDK的环境变量,使用如下的命令检查JDK安装的情况。

 Java -version

2、对apache-maven-3.2.3-bin.zip进行解压缩

3、设置系统环境变量:MAVEN_HOME

 

 

 

 验证Maven安装是否成功

 

 输入"mvn –v"命令 查看Maven的相关信息,如下图所示:

 

能够出现这样的信息就说明Maven的安装已经成功了。

 

三、maven常用命令 

mvn clean:表示运行清理操作(会默认把target文件夹中的数据清理)。
mvn clean compile:表示先运行清理之后运行编译,会将代码编译到target文件夹中。
mvn clean test:运行清理和测试。
mvn clean package:运行清理和打包。
mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。
mvn clean deploy:运行清理和发布(发布到私服上面)。

 

四、maven配置文件详解

配置文件位置如下:

settings.xml的作用

它是用来设置Maven参数的配置文件。并且,settings.xml是Maven的全局配置文件。settings.xml中包含类似本地仓库、远程仓库和联网使用的代理信息等配置

 Maven  允许我们在这里定义我们自己的 settings.xml,如果需要在这里定义我们自己的settings.xml的时候就可以把Maven安装目录下面的settings.xml文件拷贝到C盘下的用户目录的.m2目录下,然后改成自己想要的样子。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | 该值表示构建应用时本地仓库的路径,当我们添加了maven坐标在配置文件中是,从远程仓库下载的jar包也是存放在当前的位置
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

  <!-- interactiveMode
   |作用:表示maven是否需要和用户交互以获得输入。
   |如果maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。
   | Default: true
  <interactiveMode>true</interactiveMode>
  -->

  <!-- offline
   | 作用:这个属性表示在Maven进行项目编译和部署等操作时是否允许Maven进行联网来下载所需要的信息。
   | 如果构建系统需要在离线模式下运行,则为true,需要联网拉取jar则为false, 默认为false。
   | 当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。
   | Default: false
  <offline>false</offline>
  -->

  <!-- pluginGroups
   |  作用:在pluginGroups元素下面可以定义一系列的pluginGroup元素。表示当通过plugin的前缀来解析plugin的时候到哪里寻找。
pluginGroup元素指定的是plugin的groupId。默认情况下,Maven会自动把org.apache.maven.plugins 和 org.codehaus.mojo 添加到pluginGroups下。
|--> <pluginGroups> <!-- pluginGroup | Specifies a further group identifier to use for plugin lookup. <pluginGroup>com.your.plugins</pluginGroup> --> </pluginGroups> <!-- proxies | 作用:用来配置代理列表,只有当前代理列表下的主机可以访问网络 |--> <proxies> <!-- proxy | 配置代理信息 <proxy> <!-- 代理的唯一定义符,用来区分不同的代理元素 --> <id>Myproxy</id> <!--该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。--> <active>true</active> <!--代理的协议。 协议://主机名:端口,分隔成离散的元素以方便配置。 --> <protocol>http</protocol> <!--代理的主机名。协议://主机名:端口,分隔成离散的元素以方便配置。 --> <host>proxy.host.net</host> <!--代理的端口。协议://主机名:端口,分隔成离散的元素以方便配置。 --> <port>80</port> <!--代理的用户名,用户名和密码表示代理服务器认证的登录名和密码。 --> <username>proxyuser</username> <!--代理的密码,用户名和密码表示代理服务器认证的登录名和密码。 --> <password>proxypass</password> <!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。 --> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy> --> </proxies> <!-- servers | 作用:一般,仓库的下载和部署是在pom.xml文件中的repositories 和 distributionManagement |元素中定义的。
然而,一般类似用户名、密码(有些仓库访问是需要安全认证的)等信息不应该在pom.xml文件中配置,这些信息可以配置在 | settings.xml 中 --> <servers> <!-- server | 需要连接到服务器时,配置服务器需要的信息 <server> | 这是server的id(注意不是用户登陆的id),该id与POM文件中distributionManagement中repository元素的id相匹配。 <id>deploymentRepo</id> | 鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码 <username>repouser</username> | 鉴权密码 <password>repopwd</password> </server> --> <!-- Another sample, using keys to authenticate. <server> <id>siteServer</id> | 鉴权时使用的私钥位置。和前两个元素类似,私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)以及如果需要的话,一个密语。
将来passphrase和password元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明
<privateKey>/path/to/private/key</privateKey> | 鉴权时使用的私钥密码 <passphrase>optional; leave empty if not used.</passphrase> </server> --> </servers> <!-- mirrors | 作用:用于定义一系列的远程仓库的镜像。我们可以在pom中定义一个下载jar包的时候所使用的远程仓库。但是有时候这个远程仓库会比较忙,
所以这个时候人们就想着给它创建镜像以缓解远程仓库的压力,也就是说会把对远程仓库的请求转换到对其镜像地址的请求。每个远程仓库都会有一个id,
这样我们就可以创建自己的mirror来关联到该仓库,那么以后需要从远程仓库下载jar包的时候Maven就可以从我们定义好的mirror站点来下载,
这可以很好的缓解我们远程仓库的压力。在我们定义的mirror中每个远程仓库都只能有一个mirror与它关联,也就是说你不能同时配置多个mirror的mirrorOf指向同一个repositoryId。
|--> <mirrors> <!-- mirror | 给定仓库的下载镜像 <mirror> | 该镜像的唯一标识符。id用来区分不同的mirror元素 <id>mirrorId</id> | 镜像名称 <name>Human Readable Name for this Mirror.</name> | 该镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo.maven.apache.org/maven2/)的镜像,就需要将该元素设置成central。
这必须和中央仓库的id central完全一致
<mirrorOf>repositoryId</mirrorOf> | 该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL <url>http://my.repository.com/repo/path</url> </mirror> --> <!-- 一般maven使用国外的仓库地址下载jar比较慢, 通常需要换成国内的镜像地址 --> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors> <!-- profiles | 作用:根据环境参数来调整构建配置的列表。 settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。它包含了id、activation、repositories、pluginRepositories和 properties元素。
这里的profile元素只包含这五个子元素是因为这里只关心构建系统这个整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。
如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。当所有的约束条件都满足的时候就会激活这个profile
|--> <profiles> <!-- profile <profile> <!-- profile的唯一标识 --> <id>jdk-1.4</id> <!-- 作用:自动触发profile的条件逻辑。这是profile中最重要的元素。跟pom.xml中的profile一样,settings.xml中的profile也可以在特定环境下改变一些值,
而这些环境是通过activation元素来指定的。activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以包含profile的id。
profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活(如,-P test)。 --> <activation> <!-- 表示当jdk的版本满足条件的时候激活 --> <jdk>1.4</jdk> </activation> <!-- 用于定义远程仓库的,当该profile是激活状态的时候,这里面定义的远程仓库将作为当前pom的远程仓库。它是maven用来填充构建系统本地仓库所使用的一组远程仓库 --> <repositories> <repository> <id>jdk14</id> <name>Repository for JDK 1.4 builds</name> <url>http://www.myhost.com/maven/jdk14</url> <layout>default</layout> <snapshotPolicy>always</snapshotPolicy> </repository> </repositories> </profile> --> | Here is another profile, activated by the system property 'target-env' with a value of 'dev', | which provides a specific path to the Tomcat instance. To use this, your plugin configuration | might hypothetically look like: | | ... | <plugin> | <groupId>org.myco.myplugins</groupId> | <artifactId>myplugin</artifactId> | | <configuration> | <tomcatLocation>${tomcatPath}</tomcatLocation> | </configuration> | </plugin> | ... | | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to | anything, you could just leave off the <value/> inside the activation-property. | <profile> <id>env-dev</id> <activation> <property> <name>target-env</name> <value>dev</value> </property> </activation> <!-- 用于定义属性键值对的。当该profile是激活状态的时候,properties下面指定的属性都可以在pom.xml中使用。对应profile的扩展属性列表。 --> <properties> <tomcatPath>/path/to/tomcat/instance</tomcatPath> </properties> </profile> </profiles> <!-- activeProfiles | 作用:手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。 <activeProfiles> <!-- 要激活的profile id --> <activeProfile>alwaysActiveProfile</activeProfile> <activeProfile>anotherAlwaysActiveProfile</activeProfile> </activeProfiles> --> </settings>

 

 

 

 

 

 

posted @ 2018-08-17 11:45  邓维-java  阅读(235)  评论(0编辑  收藏  举报