02 Maven
lix_uan 30 0

安装配置

  • 解压

  • 配置环境变量 MAVEN_HOME为安装路径的bin目录

  • 修改本地仓库

    • 修改 conf/settings.xml 中的 localRepository 为一个指定目录
  • 配置阿里云私服

    • 修改 conf/settings.xml 中的 mirrors 标签,为其添加如下子标签
    <mirror>  
        <id>alimaven</id>  
        <name>aliyun maven</name>  
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>          
    </mirror>

分模块开发与设计

  • 将一个项目拆分成若干个子模块

  • 通过指令安装模块到本地仓库(团队内部开发需要发布模块功能到私服中)

    mvn install

依赖管理

  • 依赖具有传递性

    • 直接依赖
    • 间接依赖
    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
  • A依赖B,B依赖C,如果A不想将C依赖进来

    • 可选依赖:对外隐藏当前所依赖的资源,隐藏后对应资源将不具有依赖传递性

      <dependency>
          <groupId>cn.lixuan</groupId>
          <artifactId>maven</artifactId>
          <version>1.0-SNAPSHOT</version>
          <!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性-->
          <optional>false</optional>
      </dependency>
    • 排除依赖:主动断开依赖的资源,被排除的资源无需指定版本

      <dependency>
          <groupId>cn.lixuan</groupId>
          <artifactId>maven</artifactId>
          <version>1.0-SNAPSHOT</version>
      
          <exclusions>
              <exclusion>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
              </exclusion>
          </exclusions>
      </dependency>

聚合与继承

  • 聚合(同步构建)

    <!--父工程设计聚合所包含的子模块的名称-->
    <packaging>pom</packaging>
    
    <modules>
        <module>../maven_ssm</module>
        <module>../maven_pojo</module>
        <module>../maven_dao</module>
    </modules>
  • 继承(简化配置,减少版本冲突)

    <!--在子工程中引用父工程-->
    <parent>
        <groupId>cn.lixuan.maven</groupId>
        <artifactId>Parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--指定从当前pom.xml文件出发寻找父工程的pom.xml文件的相对路径-->
        <relativePath>../Parent/pom.xml</relativePath>
    </parent>
    <!--在父工程中管理依赖-->
    <packaging>pom</packaging>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.0</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--子项目中重新指定需要的依赖,删除范围和版本号-->
    <!--子工程中还可以定义父工程中没有定义的依赖关系-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>

属性管理

  • 统一管理Jar包版本

    <properties>
        <spring.version>4.0.0.RELEASE</spring.version>
    </properties>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

多环境配置与应用

  • maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境

    <!--定义多环境-->
    <profiles>
        <!--定义具体的环境:生产环境-->
        <profile>
            <!--定义环境对应的唯一名称-->
            <id>env_dep</id>
            <!--定义环境中专用的属性值-->
            <properties>
                <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
            </properties>
            <!--设置默认启动-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    
        <!--定义具体的环境:开发环境-->
        <profile>
            <id>env_pro</id>
            ……
        </profile>
    </profiles>
  • 使用多环境

    mvn install –P env_pro
  • 跳过测试,快速打包

    mvn install –D skipTests

私服(Nexus)

下载

  • 在maven的settings.xml中 mirrors 标签中配置, 先注释掉aliyun的配置

    <mirror>
        <id>nexus-xuan</id>
        <mirrorOf>*</mirrorOf>
        <url>http://localhost:8081/repository/maven-public/</url>
    </mirror>
  • 在nexus中设置允许匿名下载,如果私服中没有对应的jar, 可以配置让私服去阿里云中下载依赖

上传

  • settings.xml中配置本地仓库访问私服的权限

    <server>
      <!--id任意,多个server的id不重复就行,后面会用到-->
      <id>xuan-nexus</id>
      <username>admin</username>
       <!--填写自己nexus设定的登录密码-->
      <password>123456</password>
    </server>
  • 项目的pom.xml中配置当前项目访问私服上传资源的保存位置

    <distributionManagement>
        <repository>
              <!--和maven/settings.xml中server中的id一致,表示使用该id对应的用户名和密码-->
            <id>xuan-nexus</id>
              <!--如果jar的版本是release版本,那么就上传到这个仓库,根据自己情况修改-->
            <url>http://localhost:8081/repository/xuan-releases/</url>
        </repository>
        <snapshotRepository>
              <!--和maven/settings.xml中server中的id一致,表示使用该id对应的用户名和密码-->
            <id>xuan-nexus</id>
              <!--如果jar的版本是snapshot版本,那么就上传到这个仓库,根据自己情况修改-->
            <url>http://localhost:8081/repository/xuan-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
  • 发布资源到私服

    mvn deploy
评论区

索引目录