项目目录
聚合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元素
groupId
和version
是可以被继承的,那么还有哪些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