Maven学习笔记(四)-----生命周期|POM常用元素介绍

clean清理项目

  • pre-clean:执行清理前的工作
  • clean:清理上一次构建生成的所有文件
  • post-clean:执行清理后的文件

default构建项目(最核心)

  • compile
  • test
  • package
  • install
    #site生成项目站点
    • pre-site:在生成项目站点前要完成的工作
    • site:生成项目的站点文档
    • post-site:在生成项目站点后要完成的工作
    • site-deploy:发布生成的站点到服务器上

POM文件

放在工程目录下。

<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">
   <modelVersion>4.0.0</modelVersion>

   <groupId>反写的公司网址+项目名</groupId>
   <artifactId>项目名+模块名</artifactId>
   <!-- 第一个0 表示大版本号
        第二个0 表示分支版本号
        第三个0 表示小版本号
        0.0.1
        snapshot快照
        alpha内部测试
        beta公测
        Release稳定
        GA正式发布
    -->
   <version>项目的版本</version>
   <!--打包方式,不指定默认是jar
        war zip pom
    -->
   <packaging></packaging>
   <!--项目描述名-->
   <name></name>
   <!-- 项目地址-->
   <url></url>
   <!--项目描述-->
   <description></description>
   <!--开发人员-->
   <developers></developers>
   <!--许可信息-->
   <licenses></licenses>
   <!--组织-->
   <organization></organization>

    <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
            <type></type>
            <!--依赖范围-->
            <scope></scope>
            <!--true|false,设置依赖是否可选,默认false.子项目默认      继承,true必须显式地引入该依赖-->
            <optional></optional>

            <!--排除依赖传递列表-->
            <exclusions>
                <exclusion>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <!--依赖管理-->
    <dependencyManagement>
        <dependencies>
            <dependency>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <!--插件列表-->
        <plugins>
            <plugin>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
            </plugin>
        </plugins>
    </build>

    <!--继承-->
    <parent></parent>
    <!--指定多个模块,一起编译-->
    <modules>
        <module></module>
    </modules>
</project>

scope

  • compile:默认的范围,编译测试运行都有效
  • provided:在编译和测试时有效
  • runtime:在测试和运行时有效
  • test:只在测试时有效
  • system:编译和测试时有效(与本机系统相关联,可移植性差)
  • import:导入的范围,它只是用在dependencyManagment中,表示从其他的pom中导入dependecy的配置

import例子代码:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>maven</groupId>
  <artifactId>B</artifactId>
  <packaging>pom</packaging>
  <name>B</name>
  <version>1.0</version>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>maven</groupId>
        <artifactId>A</artifactId>
        <version>1.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>test</groupId>
        <artifactId>d</artifactId>
        <version>1.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>test</groupId>
      <artifactId>a</artifactId>
      <version>1.0</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>test</groupId>
      <artifactId>c</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
</project>

说明:所有A的管理依赖项将被并入B,除了d,因为它在这个pom中定义。

依赖传递

共三个工程A、B、C。
1)A打包入库,B依赖A;
2)B打包入库,C依赖B;
3)查看C工程的Maven Dependencies,发现C依赖了工程A。若不需要依赖A,则在C工程目录的POM文件中的依赖B项下面添加如下代码:

        <dependency>
            <groupId>B的工程id</groupId>
            <artifactId>B的模块id</artifactId>
            <version>B的版本</version>
            <exclusions>
                <exclusion>
                    <groupId>A的工程id</groupId>
                    <artifactId>A的模块id</artifactId>
                    <!--注意此处不需要添加A的version-->
                </exclusion>
            </exclusions>
        </dependency>

依赖冲突

两条原则:
1. 短路优先
(1)A->B->C->X(jar)
(2)A->D->X(jar)
A工程优先依赖(2)。
2. 先声明优先使用
如果路径长度相同,则谁先声明,先解析谁。

聚合和继承

聚合

使用标签。

<modules>
        <module>../bge</module>
        <module>../nage</module>
        <module>../shanji</module>
</modules>

继承

父POM代码如下:

<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>shen.one</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>parent</name>
    <url>http://maven.apache.org</url>

    <properties>
        <junit.version>3.8.1</junit.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <!--父POM将依赖关系加入到Manangement中去,父POM不做代码编写-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

子POM代码如下:

<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>shen.one</groupId>
    <artifactId>bge</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>bge</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

<!--继承的代码如下-->

    <parent>
        <groupId>shen.one</groupId>
        <artifactId>parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <!--特别注意: 需要填写父POM路径-->
        <relativePath>../parent/pom.xml</relativePath>
    </parent>

<!--继承的代码如上-->

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>
    </dependencies>
</project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值