Maven 聚合工程的创建( 二 )

common-project 的 pom.xml:
<?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>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>common-project</artifactId></project>a-project 的 pom.xml:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 继承父工程 --><parent><artifactId>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>a-project</artifactId><dependencies><!-- common-project 依赖--><dependency><groupId>com.luis</groupId><artifactId>common-project</artifactId><version>1.0.0</version></dependency></dependencies></project>b-project 的 pom.xml:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 继承父工程 --><parent><artifactId>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>b-project</artifactId><dependencies><!-- common-project 依赖--><dependency><groupId>com.luis</groupId><artifactId>common-project</artifactId><version>1.0.0</version></dependency></dependencies></project>c-project 的 pom.xml:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 继承父工程 --><parent><artifactId>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>c-project</artifactId><dependencies><!-- common-project 依赖--><dependency><groupId>com.luis</groupId><artifactId>common-project</artifactId><version>1.0.0</version></dependency></dependencies></project>其他说明

  • 注意:各个子工程的包名要保持一致
  • 在父工程 pom 的 dependencies 标签中添加的依赖,在其所有子工程中都有,而且和父工程依赖的版本完全一致 。
  • 在父工程 pom 的 dependencyManagement 标签中添加的依赖,子工程中默认是没有的 。
    但是,如果子工程中需要使用,则直接在其 dependencies 标签中添加即可,此时可不指定版本号,默认使用的是父类中指定的版本号 。
    若子工程不想使用父类中指定的版本号,则自己需要明确指定所用依赖的版本号 。
  • 父工程的标志:pom 中存在 modules 和 packing 标签,且 packaging 标签中打包类型必须为 pom 。
  • 子工程的标志:pom 中 存在 parent 标签,且标签内坐标指向父工程 。
dependencyManagement 和 dependencies 组件区别:

经验总结扩展阅读