profile

在pom文件中配置 开发和测试环境的 profile信息,

   <profiles>
<profile>
<!-- 开发环境 -->
<id>dev</id>
<properties>
<user>root</user>
<password>root</password>
<ip>192.168.233.123</ip>
<active>dev</active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<user>root</user>
<password>root</password>
<ip>192.168.233.124</ip>
<active>test</active>
</properties>
</profile>
</profiles>

引入插件

 <build>
<!-- maven扩展 提供ssh远程服务 是wagon-maven-plugin插件所依赖 -->
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions> <plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<!-- 拷贝目录下(执行目录) target目录下的jar包 -->
<fromFile>target/${project.artifactId}${activeName}-${project.version}.jar</fromFile>
<!-- 使用scp传输文件 指定服务端 用户名密码 ip 并指定目标文件夹-->
<url>scp://${user}:${password}@${ip}/home/app/server</url>
<!-- 命令列表 可以在传输完成后执行 -->
<commands>
<command>systemctl restart boot-server</command>
</commands>
<!-- 显示运行命令的输出结果 -->
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
</plugins>
</build>

更多用法 请查看官网

  1. 将 profile中配置的变量 作为 连接的参数 这样指定profile后 就可以动态的拷贝的相应的文件夹

  2. 执行命令:mvn clean package -Ptest wagon:upload-single wagon:sshexec

    这个命令分成三个部分

    • mvn clean package -Ptest 指定profile 并打包

    • wagon:upload-single 上传命令

    • wagon:sshexec 执行配置的命令列表

    可以酌情选择

使用maven profile 替换 spring 的profile

上面是将项目按照指定的profile打包并上传到服务器 , 但是如果你的springboot项目 也配置了多个 环境,那么在执行时也需要 指定对应的 spring profile ,

可以 使用maven的profile 代替 spring的profile 那么当打包完成后 就无须在启动时重新指定

在application.yml 中配置:

spring:
profiles:
active: @active@

使用@@ 取maven profile中配置的变量, 如上例配置了maven的profile为test 等价于spring.profiles.active=test 这样就会读取到 application-test.yml里面的配置了

这里我一直都犯了一个错误: 我一直以为 当执行jar包指定了profile后 则会读取 相应的 application-{profile}.yml文件,不会读取 默认的application.yml了,其实不然 正确的读取顺序是,无论如果都会先读取默认文件夹下面 application.yml 再根据有没有指定profile ,去找对应的 yaml,并覆盖之前相同的配置(互补) 这也能解释为什么 profile配置在 application.yml 中可以生效的原因

使用 maven 的 `wagon-maven-plugin`插件 快速部署 到不同的 环境的更多相关文章

  1. 【Kubernetes学习笔记】-使用Minikube快速部署K8S单机学习环境

    介绍 https://minikube.sigs.k8s.io/docs/ Minikube 用于快速在本地搭建 Kubernetes 单节点集群环境,它对硬件资源没有太高的要求,方便开发人员学习试用 ...

  2. IDEA远程快速部署SpringBoot项目到Docker环境

    一:基础准备 1.首先在linux服务器安装Docker环境,具体安装步骤及Docker使用参考官网或网络资料(这里重点是快速部署项目到Docker环境) 2.配置Docker远程连接端口 1.vim ...

  3. Maven版本管理-Maven Release Plugin插件

    一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...

  4. maven release plugin插件

    1.打包版本区别 SNAPSHOT 快照版本(开发阶段,不稳定,容易出现bug)RELEASE 正式版本(外部依赖使用阶段,稳定,很少出现bug)Tag :标记每次代码提交的版本(比较稳定,类似分支) ...

  5. Maven - 深入理解maven构建生命周期和各种plugin插件

    作者:亚当-adam 来源:CSDN 原文:https://blog.csdn.net/zhaojianting/article/details/80321488 版权声明:本文为博主原创文章,转载请 ...

  6. Maven学习(九)插件介绍

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...

  7. Maven实战——常用Maven插件介绍

    maven nexus 库已上传了第三方jar,但就是用mvn compile下不到本地 回答于 2013-06-04 14:40 你是通过何种方式上传到nexus的? 有给pom文件吗? 如果是单纯 ...

  8. SpringBoot使用Maven插件打包部署

    [问题] 之前一直用SpringBoot做一些小项目,想打包部署在环境上,总是少依赖包jar.百度下可以通过Spring Boot Maven plugin插件,把Maven配置的依赖包都打到项目包里 ...

  9. ssm+maven+pageHelper搭建maven项目实现快速分页

    ssm+maven+pageHelper搭建maven项目实现快速分页 PageHelper分页使用: 插件的环境引入: 1.pom文件中引入分页插件的资源位置: <dependency> ...

  10. maven中添加jetty运行插件

            maven项目,用jetty插件运行,对热部署的支持比较好.maven的pom文件加入下面代码 <plugin> <groupId>org.mortbay.je ...

随机推荐

  1. TypeScript中泛型<T>详细讲解

    1.泛型 在定义函数或者接口或者类的时候 不能预先确定要使用的数据类型 而是在使用函数.接口.或者类的时候才能够确定数据类型 这个时候我们就需要使用的是泛型 2.功能描述 我们需要实现一个方法,方法中 ...

  2. 修改windows电脑键盘按键映射

    改键的需求 买了一把61键的小键盘,有些按钮没有,比如Home.End.四个方向键,这些键需要按Fn+XX来实现,所以上网查了一下键盘按键修改的方法,即把按键给改了,比如把右边的Ctrl改成方向键. ...

  3. TienChin-课程管理-课程搜索

    后端 新建 CourseVO.java: /** * CourseVO类是一个课程的值对象,用于存储课程的相关信息. * 它包含了课程的名称.类型.适用对象.最低价格和最高价格等属性. */ publ ...

  4. Linux 文件目录操作命令

    Linux 基础的文件目录操作命令,融合多部Linux经典著作,去除多余部分,保留实用部分. 显示目录或文件: 显示目标列表,在Linux系统中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显 ...

  5. rpm安装卸载jdk

    安装 rpm -ivh jdk-7-linux-x64.rpm 卸载 先查看安装的包 rpm -qa | grep jdk 卸载 rpm -e --nodeps jdk-1.7.0-fcs.x86_6 ...

  6. 欢迎加入 DotNet NB 交流学习群

    目录 起因 创建群组 群成员 技术交流 社区推广 社区前辈 欢迎加入 起因 自从2019年参加 .NET Conf China 大会之后,我创办了一个公众号 DotNet NB,内容主要是 关于 .N ...

  7. Linux-Shell 小数运算,四舍五入

    在shell中做小数运算,可以借助bc 或者awk工具 一.使用bc做小数运算,scale指定小数点位数 1.加法运算(scale参数无效) #echo "5.999 + 5.001&quo ...

  8. AT_arc125_c [ARC125C] LIS to Original Sequence 题解

    题目传送门 前置知识 贪心 | 构造 解法 对于任意一个未加入序列 \(P\) 的数 \(x<A_{i}(1 \le i \le k-1)\),如果其放在了 \(A_{i}\) 的前面,会导致最 ...

  9. Ubuntu下利用MWAN+LFTP解除单mac速度限制

    起因 公司网络限制了单个mac地址的速度, 而日常经常需要从线上环境下载几个G的数据到本地, 通过FileZilla每次需要一个多小时, 非常不方便 解决方案 WAN聚合 本地网口连接OpenWRT路 ...

  10. ex命令

    ex命令 ex命令用于在Ex模式下启动vim文本编辑器,ex执行效果如同vi -e,如要从Ex模式回到普通模式,则在vim中输入:vi或:visual指令即可,可以通过运行vi -e来启动ex,也可以 ...