本文共 4002 字,大约阅读时间需要 13 分钟。
Maven高级实践指南
1. 分模块开发与设计
1.0 为什么进行分模块开发
分模块开发是Maven项目管理中核心的实践方式。通过将项目划分为多个模块,不仅可以提高开发效率,还能实现各个模块的独立维护和快速迭代。这种方式尤其适合复杂的项目结构,能够清晰地划分功能边界。
1.1 工程模块与模块划分
在Maven项目中,模块划分是按照业务功能来进行的。通常包括以下几个核心模块:
- pojo(POJO):负责持久化层(Entity类)及基本数据处理。
- dao(Data Access Object):负责数据库操作及数据层逻辑。
- service(Service Layer):负责业务逻辑处理及服务层接口。
- controller(Controller Layer):负责前端请求处理及接口暴露。
1.2 SSM_POJO拆分
新建模块:创建一个新的Maven项目模块,命名为ssm_pojo。 拷贝相关内容:将原始项目中对应的实体类(User)和配置文件(如hibernate.cfg)拷贝到新模块中。 注意事项: - 实体类(User)需保留。
- 配置文件无需保留,通过依赖管理实现。
1.3 SSM_DAO拆分
新建模块:创建一个新的Maven项目模块,命名为ssm_dao。 拷贝相关内容:将原始项目中对应的Dao接口和实现类拷贝到新模块中。 配置文件管理:保留与数据层相关的配置文件(如jdbc.properties),并确保与SqlSessionFactoryBean绑定。 pom.xml管理:引入相关坐标(如spring、mybatis、druid等),并删除不必要的依赖。 1.4 SSM_Service拆分
新建模块:创建一个新的Maven项目模块,命名为ssm_service。 拷贝相关内容:将原始项目中对应的Service接口和实现类拷贝到新模块中。 配置文件管理:保留与业务层相关的配置文件(如jdbc.properties)。 pom.xml管理:引入相关坐标(如spring、junit等),并删除不必要的依赖。 1.5 SSM_Control拆分
新建模块:创建一个新的Maven项目模块,命名为ssm_controller。 拷贝相关内容:将原始项目中对应的Controller类和相关配置文件拷贝到新模块中。 配置文件管理:保留与表现层相关的配置文件(如application.properties)。 pom.xml管理:引入相关坐标(如springmvc、tomcat等),并删除不必要的依赖。 1.6 分模块总结
- 依赖管理:模块间通过pom.xml引入依赖,确保依赖版本统一。
- 资源管理:每个模块只包含自身功能相关的资源文件。
- 配置管理:每个模块独立管理自身的配置文件。
2. 聚合与多模块构建
2.1 多模块构建维护
多模块构建是Maven聚合的核心应用场景,适用于需要多个模块协同工作的项目。
2.2 聚合操作
创建聚合项目:创建一个空模块,打包类型为pom。 定义关联模块: ../ssm_controller ../ssm_service ../ssm_dao ../ssm_pojo
依赖管理:在聚合项目的pom.xml中定义各模块的依赖关系。 3. 继承与模块依赖
3.1 模块依赖关系维护
通过Maven的继承关系实现模块间的依赖管理。父模块定义依赖,子模块继承父模块的配置。
3.2 继承操作
在子模块的pom.xml中定义父模块坐标: com.itheima ssm 1.0-SNAPSHOT ../ssm/pom.xml
父模块定义依赖管理: org.springframework spring-context 5.1.9.RELEASE
3.3 继承依赖使用
在子模块中定义自己的依赖,无需重复定义版本,版本继承自父模块。
4. 属性管理
4.1 版本统一的重要性
版本统一是Maven项目管理的核心原则,确保所有模块使用相同的依赖版本。
4.2 属性类别
- 自定义属性:用于定义项目自定义的属性值。
- 内置属性:使用Maven内置属性进行快速配置。
- Setting属性:通过setting.xml文件进行动态配置。
- Java系统属性:通过系统环境变量获取配置。
- 环境变量属性:通过Maven setting.xml文件获取配置。
4.3 自定义属性示例
5.1.9.RELEASE 4.12
5. 版本管理
5.1 工程版本区分
- SNAPSHOT:用于项目开发阶段,每次构建生成新的版本。
- RELEASE:用于项目发布阶段,表示项目完成了一个稳定版本。
5.2 工程版本号约定
- 主版本:表示项目架构变更(如从Spring 4到Spring 5)。
- 次版本:表示重大功能增加或系统性漏洞修复。
- 增量版本:表示重大漏洞修复。
- 里程碑版本:表示项目达到一个里程碑阶段。
6. 资源配置
6.1 资源配置多文件维护
通过Maven的资源加载机制,支持多个配置文件的加载和引用。
6.2 配置文件引用pom属性
在配置文件中使用pom属性进行动态配置:
${jdbc.url} 7. 多环境开发
7.1 多环境兼容
通过Maven多环境配置,支持开发、测试、生产等多种环境的切换。
7.2 多环境配置示例
pro_env jdbc:mysql://127.1.1.1:3306/ssm_db true
8. 跳过测试
8.1 应用场景
8.2 使用命令跳过测试
mvn install -DskipTests
8.3 使用界面操作跳过测试
通过IDE界面选择“跳过测试”进行快速构建。
8.4 使用配置跳过测试
在pom.xml中配置:
maven-surefire-plugin 2.22.1 true **/User*Test.java **/User*TestCase.java
9. 私服部署
9.1 私服安装
- 下载Nexus:Sonatype Nexus官网
- 启动Nexus:
nexus.exe /run nexus - 访问Nexus:
http://localhost:8081
9.2 私服资源管理
- 宿主仓库:用于存储无法从中央仓库获取的资源。
- 代理仓库:代理中央仓库,实现对外部仓库的访问。
- 仓库组:将多个仓库组合为一个群组,方便配置管理。
9.3 资源上传
9.4 项目访问私服
在项目的pom.xml中添加私服仓库:
heima-release http://localhost:8081/repository/heima-release/ heima-snapshots http://localhost:8081/repository/heima-snapshots/
9.5 发布到私服
mvn deploy
转载地址:http://dutz.baihongyu.com/