仓库

Local Repository - 本地库
存放在本地计算机的仓库

Central Repository - 中央库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

Remote Repository - 远程库
中央仓库 类似于github

项目目录

  • pom.xml maven配置文件
  • settings文件 全局配置
  1.     安装的地方:${M2_HOME}/conf/settings.xml
    
  2.     用户的目录:${user.home}/.m2/settings.xml
    

pom.xml

groupId:当前Maven构件隶属的组织名 org、com、cn 等,其中 org 为非营利组织,com 为商业组织,cn 表示中国。
artifactId:项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。(必须)
version:当前版本。(必须)
packaging:打包方式,比如 jar,war... (必须)
classifier:classifier通常用于区分从同一POM构建的具有不同内容的构件。它是可选的,它可以是任意的字符串,附加在版本号之后。
<dependencies>
    <dependency>
        <groupId>net.sf.json-lib</groupId>   
        <artifactId>json-lib</artifactId>   
        <version>2.2.2</version>  
        <classifier>jdk15</classifier>    
    </dependency>
</dependencies>

依赖冲突

  • 第一原则:路径最近者优先
  • 第一声明者优先

解决冲突


<dependency>
  <groupId>org.glassfish.jersey.containers</groupId>
  <artifactId>jersey-container-grizzly2-http</artifactId>
  <!-- 剔除依赖 -->
  <exclusions>
    <exclusion>
      <groupId>org.glassfish.hk2.external</groupId>
      <artifactId>jakarta.inject</artifactId>
    </exclusion>
    ...
  </exclusions>
</dependency>

其他

  • properties 特殊属性定义,一般是版本号 可以调用

<properties>
    <spring.version>5.0.2.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.12</log4j.version>
    <mysql.version>5.1.6</mysql.version>
    <mybatis.version>3.4.5</mybatis.version>
    <aspectjweaver.version>1.6.8</aspectjweaver.version>
    <junit.version>4.12</junit.version>
    <jsp-api.version>2.0</jsp-api.version>
    <servlet-api.version>2.5</servlet-api.version>
    <jstl.version>1.2</jstl.version>
    <mybatis-spring.version>1.3.0</mybatis-spring.version>
    <druid.version>1.0.9</druid.version>
    <!--文件的编码格式-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
  • dependencyManagement 管理依赖

  • distributionManagement 部署构件至远程仓库

    <distributionManagement>

    &lt;repository&gt;
        &lt;id&gt;releases&lt;/id&gt;
        &lt;name&gt;public&lt;/name&gt;
        &lt;url&gt;http://59.50.95.66:8081/nexus/content/repositories/releases&lt;/url&gt;
    &lt;/repository&gt;
    
    &lt;snapshotRepository&gt;
        &lt;id&gt;snapshots&lt;/id&gt;
        &lt;name&gt;Snapshots&lt;/name&gt;
        &lt;url&gt;http://59.50.95.66:8081/nexus/content/repositories/snapshots&lt;/url&gt;
    &lt;/snapshotRepository&gt;
    

    </distributionManagement>

  • maven常用命令

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

  • maven生命周期

    1. clean清理项目
    2. defult(build):构建项目
    3. site:生成项目