Maven简介(二)

Maven简介

https://maven.apache.org/
软件项目管理和构建工具,可以帮助我们创建和管理项目[编译/测试/打包/发布]。
Maven基于项目对象模型(Project object model, POM)的概念,帮助开发者构建一个项目的完整生命周期[创建、编译、测试、测试报告、发布部署]。POM是Maven对一个项目的描述,一个POM就是一个XML文件。

为什么要用Maven

(1)项目管理
项目规模很大时,一定要将项目进行拆分,将一个项目拆分成多个模块,每个模块对应一个工程。
多个工程之间存在依赖关系,此时可以使用Maven的依赖管理机制,帮助在项目与项目之间建立依赖关系。
(2)jar包管理
a. 以前jar包都自己管理,换机器环境需要重新配置。通过Maven可以使用仓库管理jar包。多个项目可能会用到相同的jar包,此时可以通过Maven将jar包放到仓库中,在项目中引用仓库里的jar包。
b. jar包之间存在依赖关系,并且依赖层次很复杂。使用Maven,自动帮助我们解决jar包的依赖关系。
c. 项目中使用的jar很多,自己下载并手动添加jar包。使用Maven,帮助我们自动下载jar包。
使用Maven必须有网,至少与Maven中央仓库或者公司搭建的Maven私有仓库联网。
(3)自动化的构建工具
构建过程——>编译主代码——>编译测试代码——>执行单元测试(jUnit)——>生成测试报告——>打包(java文件生成jar文件)——>部署

Maven Repository

(1)中央仓库:apache官方提供的网络仓库,存储jar包和Maven插件。
地址repo.maven.apache.org/maven2/或者repo1.maven.org/maven2/
(2)本地仓库:从中央仓库下载下来的jar包等存储在本地机器的位置。
(3)镜像仓库:一些公司实时对中央仓库拷贝,几分钟同步一次,例如阿里云提供的镜像仓库。
地址http://maven.aliyun.com/nexus/content/groups/public
(4)私服:公司局域网内部搭建的Maven服务器。

安装Maven

(1)官网下载安装包
apache-maven-3.6.3-bin.tar.gz
Maven版本对JDK版本有要求,官网有介绍
(2)解压缩
无中文、无空格路径
conf/settings.xml是最核心的配置文件
(3)配置环境变量
Maven依赖于JAVA_HOME,cmd ——> echo %JAVA_HOME%
M2_HOME=配置Maven的安装目录,D:\maven\apache-maven-3.6.3
Path加Maven的bin目录,D:\maven\apache-maven-3.6.3\bin
测试,cmd ——> mvn -version
linux配置环境变量
centos ——> vim /etc/profile
export M2_HOME=pwd查看Maven的绝对路径
export PATH=$PATH:$M2_HOME/bin
修改生效centos ——> source /etc/profile
测试mvn -version

使用Maven创建项目

(0)配置Maven本地仓库
默认位置:C:\Users\用户名.m2\repository,即后续使用Maven下载jar包时,都默认存到以上目录。
可以编辑Maven的核心配置文件D:\maven\apache-maven-3.6.3\conf\settings.xml:

#修改本地仓库存放位置
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
···
  <localRepository>D:\maven\maven-repository</localRepository> 
···

#修改Maven下载jar包的仓库地址:中央仓库改为镜像仓库
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
···
   <mirror>
      <id>aliyun</id>
      <mirrorOf>*</mirrorOf> <!-- 所以访问都使用该镜像仓库 -->
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
   </mirror>
···
  </mirrors>

(1)创建项目

d:
cd \maven\maven-projects   #切换到存放项目文件夹
dir
mvn archetype:generate    #创建mvn项目,默认从中央仓库下载骨架结构所需jar包

一直到Choose archetype出现选择创建项目模板类型,默认7是简单的java项目,直接Enter键
又出现Define value for property 'groupId'指定“组织的名称”,公司域名反向及项目名称(com.公司名.项目名称),e.g. com.itany.ums
又出现Define value for property 'artifactId'指定项目里“模块的名称”,e.g. test
又出现Define value for property 'version' 1.0-SNAPSHOT 指定“模块当前的版本”,默认Enter键,也可以修改
又出现Define value for property 'package'  (com.公司名.项目名称),输入“模块里的包名”,默认和groupId一样

最后会确认以上设置,Enter键,BUILD SUCCESS!

#project业务组织名 - module模块名 - package包名 - class/interface

(2)修改JDK版本配置
使用Maven创建的项目,默认使用JDK1.5。可以编辑Maven的核心配置文件D:\maven\apache-maven-3.6.3\conf\settings.xml:

<profiles>
   ···
    <profile>
      <id>jdk-1.8</id>
      <activation>
        <acticeByDefault>true</acticeByDefault>
        <jdk>1.8</jdk>
      </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      </properties>
    </profile>
    ···
        <!-- profile
     | Specifies a set of introductions to the build process, to be activated using one or more of the
     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
     | or the command line, profiles have to have an ID that is unique.
     |
     | An encouraged best practice for profile identification is to use a consistent naming convention
     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
     | This will make it more intuitive to understand what the set of introduced profiles is attempting
     | to accomplish, particularly when you only have a list of profile id's for debug.
     |
     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
    <profile>
      <id>jdk-1.4</id>

      <activation>
        <jdk>1.4</jdk>
      </activation>

      <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>

      <properties>
        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
      </properties>
    </profile>
    -->
  </profiles>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容