2、Maven安装与使用

Maven系列文集

三、Maven安装配置

1、下载

官方下载

下载解压即可。在安装 Maven 之前,注意:需确保安装JDK

image

2、环境变量配置

  1. MAVEN_HOME
    maven的bin目录所在路径(不包含/bin)


    image
  2. Path
    添加 %MAVEN_HOME%/bin


    image
  3. maven升级:
    下载新版本Maven解压,修改M2_HOME路径即可

3、Maven目录说明

  1. 说明
    目录 说明
    bin mvn运行脚本,配置java命令, mvn / mvnDebug
    boot 只包含一个plexus-classworlds jar包,Maven类加载器框架
    conf settings.xml全局maven配置文件,【推荐】复制该文件至 /.m2/目录下(表示用户目录)
    lib Maven运行需要的Java类库,Maven jar包以及第三方依赖jar包
  2. ~/.m2/目录(默认本地仓库目录)
    • Winodw:
      C:\Users${user.home}\ .m2目录下
    • Linux:
      直接在根目录

4、Maven常用配置

  1. 设置环境变量MAVEN_OPTS
    通常设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为mvn命令实际执行java命令,项目较大时,使用Maven生成项目站点需要占用大量内存,如果没有该配置,容易得到java.lang.OutOfMemeryException
  2. 配置用户settings.xml
    用户可选择配置conf中的全局配置或.m2目录下的用户配置,推荐使用用户配置,避免影响系统中其他用户,并且配置用户配置便于maven升级,因为Maven升级后,conf下的全局配置需要重新设置,而.m2下的用户配置不变。
  3. 不使用IDE内嵌Maven
    IDE集成的Maven,有些时候我们需要在终端上进行命令的操作,可能会造成版本不一致的问题。

5、settings.xml

settings.xml分类全局配置和用户配置,

全局配置直接修改安装目录下conf目录下的settings.xml文件即可

image

用户配置将settings.xml文件复制到.m2目录下即可

image

Maven的配置文件遵循就近原则;也就是说 User Setting 可以覆盖 Global Setting

6、settings.xml文件内容

主要修改的地方有三个,修改本地仓库,国内镜像服务器,配置jdk的版本

  1. 修改本地仓库
    <localRepository>绝对路径</localRepository>
    <!-- 例如 -->
    <localRepository>D:\tools\apache-maven\repository</localRepository>
    
  2. 配置阿里云镜像仓库。在mirrors标签里添加以下一段即可
    <mirror>
         <!-- 仓库id-->
         <id>alimaven</id>
         <name>aliyun maven</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
         <!--
             1. 配置成* 就代表我们通过访问阿里云的maven仓库从而访问网路上所有的远程仓库,
             2. 配置成central,就代表我们通过阿里云访问central仓库,及 http://central.maven.org/maven2,        3. 如果配置成repo1,就代表通过阿里云访问http://repo1.maven.org/maven2,阿里云和这些远程仓库之间必须可以镜像,存在一定的镜像关系。-->
         <mirrorOf>*</mirrorOf>
       <!-- 可选 -->
     <repository>
         <releases>
                    <!-- 下载发布版构件 -->
                    <enabled>true</enabled>
                    <!--
                        Maven 从远程仓库更新的频率
                        never(从不)
                        daily(每天一次,默认)
                        always(每次构建都检查更新)
                        interval:X(每隔X分钟检查一次,X为任意整数)
                    -->
                    <updatePolicy>never</updatePolicy>
                    <!--
                        检验文件的策略,如果校验失败:
                        warn(默认):输出警告信息
                        fail: 构建失败
                        ignore: 忽略
                    -->
                    <checksumPolicy>warn</checksumPolicy>
                </releases>
                <snapshots>
                    <!-- 不从中央仓库下载快照版本的构件 -->
                    <enabled>false</enabled>
                </snapshots>
            </repository>
     </mirror>
    
    # 常用的仓库
    1、http://maven.aliyun.com/nexus/content/groups/public/  阿里云  (强力推荐)
    2、http://www.sonatype.org/nexus/  私服nexus工具使用
    3、http://mvnrepository.com/ (推荐)
    4、http://repo1.maven.org/maven2
    5、http://repo2.maven.org/maven2/ 私服nexus工具使用
    6、http://uk.maven.org/maven2/
    7、http://repository.jboss.org/nexus/content/groups/public
    8、http://maven.oschina.net/content/groups/public/
    9、http://mirrors.ibiblio.org/maven2/
    10、http://maven.antelink.com/content/repositories/central/
    11、http://nexus.openkoala.org/nexus/content/groups/Koala-release/
    12、http://maven.tmatesoft.com/content/groups/public/
    
  3. 在profiles标签下加入以下一段话修改jdk版本。按自己所需配置即可
    <profile>
         <id>jdk-1.8</id>
          <activation>
               <activeByDefault>true</activeByDefault>
               <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>
    

四、创建工程

1、使用Maven命令创建(了解)

  1. 命令
    mvn org.apache.maven.plugins:maven-archetype-plugin:3.1.1:generate
    简写方式
    mvn archetype:generate
    
  2. 选择archetype(项目骨架)
    执行插件之后会列出很多可用的Archetype列表,每一个Archetype前面都会对应有一个编号,同时命令行会提示一个默认的编号,其对应的Archetype为maven-archetype-quickstart创建普通java工程,
    直接回车或选择而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project,或输入指定编号回车
    紧接着会Maven会提示输入要创建项目的groupId、artifactId、version以及包名package,确认后即可生成一个maven项目。
    image

    image
  3. 一行命令
    mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    

2、项目结构说明

  1. java工程
    ├── pom.xml                           核心配置文件
    └── src                              源文件
        ├── main                         存放主程序
        │   └── java                     存放Java源代码代码
        │       └── com.wener.hello      定义包名为项目组.项目名,所有java类都在该包下创建
        │           └── App.java
        └── test                         测试目录
            └── java
                └── com.wener.hello
                    └── AppTest.java     测试Java代码
    
  2. web工程
    ├── pom.xml
    └── src
        └── main
            ├── resources                 存放框架的配置文件等
            └── webapp
                ├── WEB-INF
                │   └── web.xml
                └── index.jsp
    
  3. 实战开发中完整的结构
    ├── pom.xml
    └── src                                               源文件
        ├── main                                  存放主程序
        │   ├── java                    存放Java源代码代码
        │   ├── resources          核心配置文件
        │   └── webapp                        web应用的目录
        │       ├── WEB-INF
        │       │   └── web.xml    web应用程序入口配置
        │       └── index.jsp
        └── test
            ├── java                测试目录
            └── resources           存放测试框架的配置文件等
    

3、为什么要固定项目结构

  1. Maven 要负责项目的自动化构建,以编译为例,Maven 要想自动进行编译,那么它必须知道 Java 的源文件保存在哪里,这样约定之后,不用我们手动指定位置,Maven 能知道位置,从而帮我们完成自动编译。
  2. 遵循 约定—>配置--->编码。即能进行配置的不要去编码指定,能事先约定规则的不要去进行配置。这样既减轻了劳动力,也能防止出错。当然我们也可以手动去配置,但不推荐

4、其它常用maven命令(了解)

  1. mvn clean
    说明: 清理项目生产的临时文件,一般是模块下的target目录
  2. mvn compile
    前面我们按照maven约束好的文件路径建好项目后,加入pom.xml 在命令行输入mvn compile后,maven就会自动帮我们下载依赖jar,为代码生成字节码文件等。我们把这个过程称为 编译。
  3. mvn package
    说明: 项目打包工具,会在模块下的target目录生成jar或war等文件
  4. mvn test
    说明: 测试命令,或执行src/test/java/下junit的测试用例.
  5. mvn install
    说明: 模块安装命令 将打包的的jar/war文件复制到你的本地仓库中,供其他模块使用 -Dmaven.test.skip=true 跳过测试(同时会跳过test compile)
  6. mvn deploy
    说明: 发布命令 将打包的文件发布到远程参考,提供其他人员进行下载依赖 ,一般是发布到公司的私服

五、pom,xml

  1. 说明
    Project Object Model 项目对象模型,Maven 的核心配置文件,pom.xml,与构建过程相关的一切设置都在这个文件中进行配置
  2. 内容说明
    <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">
       <!-- 模型版本。maven2 maven3 必须是这样写,固定格式-->
      <modelVersion>4.0.0</modelVersion>
       <!-- 公司或者组织的唯一标志,公司域名反写 必要-->
      <groupId>com.wener</groupId>
     <!--  本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的  必要-->
      <artifactId>demo</artifactId>
      <!-- 本项目目前所处的版本号  必要-->
      <version>1.0-SNAPSHOT</version>
      <!-- 打包的机制,如pom,jar, war, maven-plugin, ejb, ear, rar, par,默认为jar -->
      <packaging>jar</packaging>
      <!--声明了一个对用户更为友好的项目名称,非必须,推荐声明, -->
      <name>demo</name>
      <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
     <!-- 依赖管理 -->
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341