0%

maven简介

maven简介

maven是一个项目管理工具,基于项目对象模型(POM Project Object Model)来管理项目的构建、报告和文档信息

使用maven构建项目

使用maven命令构建一个maven项目

1
mvn archetype:generate -DgroupId=com.zhanghe -DartifactId=test -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0-SNAPSHOT

DarchetypeArtifactId: 表示项目骨架,常用的有两种

  • maven-archetype-quickstart 普通的java项目
  • maven-archetype-webapp java web项目

项目目录结构

默认结构
  • 项目源码:src/main/java

  • 资源目录: src\main\resources

  • Web 项目源码:src/main/webapp

  • 测试源码:src/test/java

  • Maven 项目结构(Project Object Model POM):pom.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    目录结构
    src 源码 主程序
    main
    - java 源文件
    - resources 框架配置文件
    test
    - java
    - resources
    pom.xml
自定义结构

可以在<build>节点中<sourceDirectory>指定源码目录 <resources> 指定资源目录

依赖坐标

坐标
groupid: 公司域名倒叙+项目名
artifactid: 模块名
version: 版本
packaging: 打包方式
classifer: 定义输出的一些附件

设置属性

1
2
3
4
5
6
7
<properties>
<!-- 指定编码格式 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 指定jdk版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

maven仓库

maven仓库是指存放maven依赖jar包的位置

  • 本地仓库:存储在本地电脑的,在使用maven时,会先从本地仓库获取,如果本地仓库没有,才会去远程仓库去下载并保存在本地,可以在settings.xml中配置本地仓库的位置<localRepository>本地仓库位置</localRepository>

  • 中央仓库:由maven官方提供的仓库,不过由于maven的中央仓库在国外,可以使用仓库的镜像

    在settings.xml中配置

    1
    2
    3
    4
    5
    6
    7
    8
    <mirrors>
    <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    </mirrors>
  • 远程仓库:

    • 私服:局域网内由公司内部搭建,定制的仓库

    • 其他远程仓库:其他公司的定制的仓库

      可以在pom.xml中进行配置

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      <repository>
      <id>archiva.internal</id>
      <name>Internal Release Repository</name>
      <url>http://zhhll.com/nexus/content/repositories/releases/
      </url>
      </repository>
      <snapshotRepository>
      <id>archiva.snapshots</id>
      <name>Internal Snapshot Repository</name>
      <url>http://zhhll.com/nexus/content/repositories/snapshots/
      </url>
      </snapshotRepository>