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>
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容