maven多模块项目jar包依赖版本统一管理最佳实践1. 问题描述2. 解决方案2.1 父 pom配置2.2 模块中pom文件配置3. 总结1. 问题描述现有一个基于Java8构建的供应链管理springboot项目项目的目录结构如下scm-parent父工程scm-web模块scm-service模块scm-domain模块实现maven jar包依赖的统一版本管理。2. 解决方案1version 只允许出现在一个地方父 pom 的 2子模块 dependency里不准写 除非是本级模块互相引用2.1 父 pom配置pom.xml文件只是一个示例大家重点关注dependencyManagement, properties中定义的版本号变量即可。?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionnamescm-parent/namegroupIdcom.xx/groupIdartifactIdscm-parent/artifactIdversion0.0.1/versionpackagingpom/packagingpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingproject.scm.version0.0.1/project.scm.versionserverframe.version1.0.1-SNAPSHOT/serverframe.version!-- 第三方依赖版本 --lombok.version1.18.22/lombok.versionmybatis.version3.5.19/mybatis.versionmybatis-plus.version3.5.12/mybatis-plus.versionmybatis-plus-generator.version3.5.0/mybatis-plus-generator.versiondocx4j.version3.2.1/docx4j.versionshiro.version1.7.1/shiro.version.../propertiesmodulesmodulescm-domain/modulemodulescm-service/modulemodulescm-web/module/modulesdependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupId.../groupIdartifactId.../artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependencydependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring/artifactIdversion${shiro.version}/version/dependency/dependencies/dependencyManagement/project2.2 模块中pom文件配置模块中pom文件只定位maven坐标不能带版本号?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionnamescm-service/nameartifactIdscm-service/artifactIdversion${project.scm.version}/versionpackagingjar/packagingparentgroupIdcom.lehui.lhscm/groupIdartifactIdscm-parent/artifactIdversion0.0.1/version/parentdependencies!-- word模板引擎 --dependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactId/dependencydependencygroupId.../groupIdartifactId.../artifactId/dependency/dependencies/project3. 总结dependencyManagement 本身不引入依赖只是版本声明dependencyManagement只有子模块声明了对应的maven坐标才引入指定版本的maven依赖不声明不引入。
maven多模块项目jar包依赖版本统一管理最佳实践
maven多模块项目jar包依赖版本统一管理最佳实践1. 问题描述2. 解决方案2.1 父 pom配置2.2 模块中pom文件配置3. 总结1. 问题描述现有一个基于Java8构建的供应链管理springboot项目项目的目录结构如下scm-parent父工程scm-web模块scm-service模块scm-domain模块实现maven jar包依赖的统一版本管理。2. 解决方案1version 只允许出现在一个地方父 pom 的 2子模块 dependency里不准写 除非是本级模块互相引用2.1 父 pom配置pom.xml文件只是一个示例大家重点关注dependencyManagement, properties中定义的版本号变量即可。?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionnamescm-parent/namegroupIdcom.xx/groupIdartifactIdscm-parent/artifactIdversion0.0.1/versionpackagingpom/packagingpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingproject.scm.version0.0.1/project.scm.versionserverframe.version1.0.1-SNAPSHOT/serverframe.version!-- 第三方依赖版本 --lombok.version1.18.22/lombok.versionmybatis.version3.5.19/mybatis.versionmybatis-plus.version3.5.12/mybatis-plus.versionmybatis-plus-generator.version3.5.0/mybatis-plus-generator.versiondocx4j.version3.2.1/docx4j.versionshiro.version1.7.1/shiro.version.../propertiesmodulesmodulescm-domain/modulemodulescm-service/modulemodulescm-web/module/modulesdependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupId.../groupIdartifactId.../artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependencydependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring/artifactIdversion${shiro.version}/version/dependency/dependencies/dependencyManagement/project2.2 模块中pom文件配置模块中pom文件只定位maven坐标不能带版本号?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionnamescm-service/nameartifactIdscm-service/artifactIdversion${project.scm.version}/versionpackagingjar/packagingparentgroupIdcom.lehui.lhscm/groupIdartifactIdscm-parent/artifactIdversion0.0.1/version/parentdependencies!-- word模板引擎 --dependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactId/dependencydependencygroupId.../groupIdartifactId.../artifactId/dependency/dependencies/project3. 总结dependencyManagement 本身不引入依赖只是版本声明dependencyManagement只有子模块声明了对应的maven坐标才引入指定版本的maven依赖不声明不引入。