Maven项目思考&实战
参考了网络上很多文章, 特此感谢.
Maven项目规范
- 同一项目中所有模块版本保持一致
- 子模块统一继承父模块的版本
- 统一在顶层模块Pom的节中定义所有子模块的依赖版本号,子模块中添加依赖时不要添加版本号
- 开发测试阶段使用SNAPSHOT
- 生产发布使用RELEASE或(无后缀)正式版
- 新版本迭代只修改父POM中的版本和子模块依赖的父POM版本
部署目标
- 正确
- 快速
- 简单
- 自动
善用工具
- 插件 versions-maven-plugin: 管理自身版本号, 依赖版本号
- 插件 maven-release-plugin: 自动升级版本, 提交代码, 打TAG
场景1: 独立项目(对外)的发布流程
- 确定/更新依赖模块版本(第三方)
- 发布服务器: 更新代码
- 准备发布: mvn -B -DskipTests=true release:clean release:prepare
- 本地准备: 修改版本号从snapshot到无后缀版本(或自定义)
- 本地准备: GIT仓库的新TAG: bfeaturemod-1.0.8
- 本地编译
- 本地准备: 更新版本号为下一个snapshot版本
- 本地准备: 提交
- 正式发布: mvn -DskipTests=true release:perform
- 发布最新的snapshot版本: mvn -DskipTests=true deploy
场景2: 内部项目永远snapshot
内部项目就很灵活了, 这里介绍一种发布流程.
前提条件
- 所有项目版本号永远是snapshot, 而且一般不升版本号, 为1.0-snapshot
- 生产仓库和开发仓库物理隔离
- 如果只有一台部署机器, 则只使用mvn install, 不使用deploy
- 每次发布都是全量发布(如果代码没有修改, 部署脚本(自己编写)会比较后自动跳过)
- 配置好依赖关系后, 会自动先compile和install依赖 (自己编写的部署脚本)
- 父子模块可以分别compile和install (被依赖的话会自动编译安装)
备注: 如果多台部署机器, 则需要deploy, 则需要激活Maven仓库的profile (区分生产和开发)
内部项目部署—发布步骤
- 如果有依赖项目, 则先发布依赖项目(人工或者脚本根据配置)
- 更新代码, 检查代码是否有更新, 如果没有更新则不发布
- 编译发布 mvn clean install –DskipTests=true
- 打TAG提交到GIT
- 部署: 复制包到远程服务器, stop/start
内部项目部署—支持的方式
- Web (jetty)
- Service(Assembly) +使用wrapper包装
- Spring Boot + Wrapper
- Command 自定义
- 自己扩展
需要自己准备脚本(复制粘贴), 依赖配置等(一次性)
内部项目部署配置—示例


场景3: 更复杂的项目开发部署
可以组合使用versions-maven-plugin , maven-release-plugin 来自动发布, 但会比较繁琐.

过于复杂, 则不推荐使用了.
总之要根据自己的实际情况做调整, 或者使用更好的工具更好的方法来解决.
Maven项目思考&实战的更多相关文章
- 【IDEA】本地新建Maven项目+配置Git和GitHub+代码上传和拉取到GitHub+其他IDEA和GitHub实战
一.本地新建Maven项目并启动成功 1. 按照IDEA提供的模板,构建一个maven webapp的模板项目. 一路Next,到最后的finish.如下图. 2. 新建Tomcat,启动刚建立的项目 ...
- 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包
参照<maven实战>在本地创建对应的基本项目helloworld,在本地完成后项目结构如下: 可以看到maven项目的骨架:src/main/java(javaz主代码)src/test ...
- kubernetes下jenkins实战maven项目编译构建
关于kubernetes环境的jenkins集群 在kubernetes环境部署的jenkins集群,执行任务时会新建pod,任务完成后pod被销毁,架构如下所示: 在kubernetes搭建jenk ...
- Maven实战(二)构建简单Maven项目
上一节讲了maven的安装和配置,这一节我们来学习一下创建一个简单的Maven项目 1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: mvn archetype:gene ...
- Maven实战(三)Eclipse构建Maven项目
1. 安装m2eclipse插件 要用Eclipse构建Maven项目,我们需要先安装meeclipse插件 点击eclipse菜单栏Help->Eclipse Marketplac ...
- (转)Maven实战(三)Eclipse构建Maven项目
1. 安装m2eclipse插件 要用Eclipse构建Maven项目,我们需要先安装meeclipse插件 点击eclipse菜单栏Help->Eclipse Marketplac ...
- (转)Maven实战(二)构建简单Maven项目
上一节讲了maven的安装和配置,这一节我们来学习一下创建一个简单的Maven项目 1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: mvn archetype:gene ...
- 096实战 在windows下新建maven项目
1.拷贝settings到.m2文件下 2.修改文件 3.新建Project项目 4.转换为maven项目 config下转换 5.拷贝pom文件 <project xmlns="ht ...
- 【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架
技术推荐 自定义Archetype Maven骨架/以当前项目为模板创建maven骨架,可以参考http://maven.apache.org/archetype/maven-archetype-pl ...
随机推荐
- Spring Boot 2.x基础教程:使用Redis的发布订阅功能
通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K.V存储的高性能缓存. 接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦! 发 ...
- 『无为则无心』Python基础 — 12、Python运算符详细介绍
目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...
- 番外篇:使用nssm工具将ES、Kibana、Logstash或者其他.bat文件部署为Windows后台服务的方法
使用NSSM工具安装bat文件为Windows服务 nssm是一个可以把bat批处理文件部署为Windows服务的小工具.例如很多.net项目可能还是在Windows服务器上面跑的,但是很多组件只提供 ...
- ABP Framework 研习社经验总结(6.28-7.2)
ABP Framework 研习社经验总结(6.28-7.2) 研习社初衷 在翻译 <实现领域驱动设计>-- 基于 ABP Framework 实现领域驱动设计实用指南 时,因为DDD理论 ...
- 三剑客-awk
1.作用特点 排除信息 查询信息 统计信息 替换信息 2.语法格式 awk [参数] '模式-动作' 文件 3.awk命令执行原理 4.命令使用方法 创建测试环境 [root@shuai ~]# ca ...
- python3.6虚拟环境
3.1.安装python3.6 [root@slavenode1 ~]# python -V Python 2.7.5 [root@slavenode1 ~]# yum install python3 ...
- 3、oracle表空间及索引操作
3.1.创建表空间和用户授权: 1.创建表空间: CREATE TABLESPACE <表空间名> LOGGING DATAFILE '<存放路径>' SIZE 50M AUT ...
- layui table 使用table放输入框时控制每列的宽度
<table class="layui-table" lay-filter="demo"> <colgroup> <%--设置每列 ...
- 精尽Spring Boot源码分析 - 日志系统
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- AcWing 102. 最佳牛围栏
农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于1头,也不会超过2000头. 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大 ...