maven(2)聚合和继承

项目目录

聚合pom

<?xml version="1.0" encoding="UTF-8"?>
<!--是所有pom.xml的根元素,并且在里面定义了命名空间和xsd元素-->
<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">
    <!--当前pom模型的版本-->
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lv</groupId>
    <name>testMaven</name><!--提供一个更容易阅读的名称,没什么其他太大作用。-->

    <artifactId>testMaven</artifactId>
    <packaging>pom</packaging>  <!--对于聚合模块UidpWeb来说,packaging的类型必须为pom,否则无法构建。-->
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <!--这是实现聚合的标签,其下可包含多个module元素。-->
    <modules>
        <module>testMaven-parent</module> <!--父模块需要放在最前面-->
        <module>testMaven-son</module>
    </modules>

    <!--聚合模块下的内容只需要POM文件,它不像其他模块那样有src/main/java、src/test/java等目录。
        他只是用来帮助聚合其他模块构建,他本身并不会有过多的实质内容。
        关于目录结构要注意的是,聚合模块既可以作为其他模块的父目录,也可以与其他模块处于平行的目录
        如果使用平行目录,聚合模块的POM要做相应的修改,以指向正确的模块目录:
        <module>../parent</module>
        <module>../log/pom-pack.xml</module>-->
</project>

parent pom

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <groupId>com.lv</groupId>
    <artifactId>testMaven-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <selenium-java-version>4.0.0-alpha-5</selenium-java-version>
        <testng-version>7.1.0</testng-version>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium-java-version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng-version}</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>
</project>

son pom

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>testMaven-parent</artifactId>
        <groupId>com.lv</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../testMaven-parent</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>testMaven-son</artifactId>

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


</project>

完整的异常提示:
Non-resolvable parent POM: Could not find artifact com.ecp:ecp-main:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 8, column 10 -> [Help 2]
 
原因:
多模块项目构建时,先将parent项目要先install一回,之后子项目才可以运行mvn compile命令,否则就会报如上异常。

可继承的POM元素

groupIdversion是可以被继承的,那么还有哪些POM元素可以被继承呢?以下是一个完整的列表,并附带了简单的说明:

  • groupId :项目组 ID ,项目坐标的核心元素;
  • version :项目版本,项目坐标的核心元素;
  • description :项目的描述信息;
  • organization :项目的组织信息;
  • inceptionYear :项目的创始年份;
  • url :项目的 url 地址;
  • develoers :项目的开发者信息;
  • contributors :项目的贡献者信息;
  • distributionManagerment :项目的部署信息;
  • issueManagement :缺陷跟踪系统信息;
  • ciManagement :项目的持续继承信息;
  • scm :项目的版本控制信息;
  • mailingListserv :项目的邮件列表信息;
  • properties :自定义的 Maven 属性;
  • dependencies :项目的依赖配置;
  • dependencyManagement :醒目的依赖管理配置;
  • repositories :项目的仓库配置;
  • build :包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等;
  • reporting :包括项目的报告输出目录配置、报告插件配置等。

有关版本的简单说明

对于用过svn或者cvs的朋友们,都会知道,每次修改都会提交一个版本到服务器上,对于我们平常所搭建的项目,大家可能没有注意到版本这个概念。其实版本对于叠加式开发的项目是个很重要的概念,通过上面的依赖,我们就可以清楚地看到一个version,这个就是引入依赖包的版本。

扫描二维码关注公众号,回复: 11205270 查看本文章

那么版本一共可以分为几个层次,一般来说,版本可以分为:总版本号.分支版本号.小版本号-里程碑版本。

  • 总版本号:一般表示框架的变动。
  • 分支版本号:一般表示增加了一些功能。
  • 小版本号:在分支版本上面进行bug的修复。
  • 里程碑:SNAPSHOT–>alpha–>beta–>release–>GA

猜你喜欢

转载自www.cnblogs.com/lvchengda/p/12899443.html
今日推荐