Java命令行启动jar包更改默认端口以及配置文件的几种方式

  1. java -jar xxx.jar --server.port=8081

默认如果jar包没有启动文件,可以采用这种方式进行启动

  1. java -jar xxx.jar --spring.profiles.active=dev
  1. 这种方式,你打的jar包里得有application-dev.properties或application-dev.yml这类资源文件
  2. 使用 "--spring.profiles.active" 参数,搭配@Profile注解,可以实现不同环境下(开发、测试、生产)配置参数的切换


  3. 根据文档描述,我们除application.properties外,还可以根据命名约定(命名格式:application-{profile}.properties)来配置,如果active赋予的参数没有与使用该命名约定格式文件相匹配的话,app则会默认从名为application-default.properties 的配置文件加载配置。
如:`spring.profiles.active=hello-world,sender,dev` 有三个参数,其中 dev 正好匹配下面配置中的application-dev.properties 配置文件,所以app启动时,项目会先从application-dev.properties加载配置,再从application.properties配置文件加载配置,如果有重复的配置,则会以application.properties的配置为准。
(配置文件加载顺序详见官方文档:24. Externalized Configuration)



如此,我们就不用为了不同的运行环境而去更改大量的环境配置了(此处,dev、pro、test分别为:开发、生产、测试环境配置)

  1. java -jar xxx.jar --spring.config.location=/data/java/application.properties 或 java -jar xxx.jar --spring.config.location=/data/java/application.yml

指定加载某个资源文件,也可以使用相对路径

  1. java -jar xxx.jar --spring.config.location=/data/java/application.properties -Dserver.port=8081 -Dserver.address=127.0.0.1

扩展,你加载的指定配置文件里的有server.port和server.address配置项

例如:

我工程里有mapper/xxx.xml数据库CRUD接口映射文件,我编译后的目录文件其实是在target/classes/mapper/xxx.xml

当我使用指定资源配置文件启动的时候,由于我指定的配置文件里配置的 mapper-locations: classpath:mapper/*. xml是这样的加载路径,调试运行时没问题,但是在编译后的目标目录里启动时,就会因为路径不对而导致启动失败。

如果我这样启

java -jar xxx.jar --spring.config.location=./classes/application.yml

下面一定会报mybatis-plus相关的一些错误,例如找不到映射文件之类的

那,如果我这样启

java -jar xxx.jar --spring.config.location=./classes/application.yml -Dmybatis-plus mapper-locations=./classes/mapper

就能正常加载资源配置文件并启动成功,其他配置项的加载道理也一样。

Java命令行启动jar包更改默认端口以及配置文件的几种方式的更多相关文章

  1. Linux java 命令行编译 jar包

    Java 命令行编译成class,然后在打包成jar文件. 编译成class javac -classpath $CLASS_PATH -d class ./src/Hello.java 可以通过ja ...

  2. linux下java命令行引用jar包

     一般情况下: 如果java 文件和jar 包在同一目录 poi-3.0-alpha3-20061212.jar testTwo.java 编译: javac -cp poi-3.0-alpha3-2 ...

  3. java命令行引入jar包

    编译: E:/>javac -cp e:/jdom.jar test1.java 执行: E:/>java -classpath e:/jdom.jar; test1

  4. 使用命令行生成jar包

    测试用类 public class Hello { public static void main(String[] args) { System.out.println("hello wo ...

  5. Java环境变量配置以及作用、JDK与JRE区别以及命令行引入jar包

    在配置环境变量中: 设置JAVA_HOME: 一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAV ...

  6. java基础19 导包和“命令行”打jar包

    1.导包 1.1.包 java中的包就相当于Windows文件夹        编译格式:javac -d . 类名.java 1.2.包的作用 1.解决了类名重复冲突的问题    2.便于软件版本的 ...

  7. windows下命令行打jar包方法

     注意:系统必须装了java并且配置好了java环境变量. 事先必须编译好需要打jar的class.(eclipse一般在bin,maven构建的在target/classes) 进入cmd,输入ja ...

  8. java命令行运行jar里的main类

    一般运行包含manifest的jar包,可以使用 java -jar <jar-file-name>.jar 如果jar里没有 manifest,则可以使用 java -cp foo.ja ...

  9. Java 命令行启动时指定配置文件目录

    java -jar -Xbootclasspath/a:/home/tms/conf    /home/tms/bin/S17-tms.jar 先指定配置文件目录: 再指定jar包路径: 运行clas ...

随机推荐

  1. Java线程池的四种创建方式

    Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFix ...

  2. C1. Pokémon Army (easy version) 解析(DP)

    Codeforce 1420 C1. Pokémon Army (easy version) 解析(DP) 今天我們來看看CF1420C1 題目連結 題目 對於一個數列\(a\),選若干個數字,求al ...

  3. GO-字符串处理Stings包

    目录 常用的字符串处理函数 (1) Contains (2) Join (3) Index (4) Repeat (5) Replace (6) Split (7) Trim (8) Fields 字 ...

  4. Java学习的第十四天

    1.JAVA的继承使用关键字extends继承 class 子类 extends 父类{} 子类可以用super来调用父类的非私有属性和非私有方法,还可以调用非私有的父类构造函数 如果父类子类的方法名 ...

  5. Docker(3)- Centos 7.x 下 Docker 镜像加速配置

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 前言 默认情况下,Docker ...

  6. Js中常见的内存泄漏场景

    常见的内存泄漏场景 内存泄漏Memory Leak是指程序中已动态分配的堆内存由于疏忽或错误等原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果.内存泄漏并非指内 ...

  7. yaf拓展安装步骤

    1.wget http://pecl.php.net/get/yaf-3.0.7.tgz //下载yaf.tar 2.tar zxvf yaf-3.0.7.tgz //解压 3.cd yaf-3.0. ...

  8. Ubuntu 18.04 Java JDK/JRE 安装命令

    安装默认版本 sudo apt install default-jdk Java 8 sudo apt install openjdk-8-jdk 如果我们在服务器上安装了多个Java版本,我们可以使 ...

  9. 咀嚼Lock和Synchronized锁

    1.Synchronized锁 底层是monitor监视器,每一个对象再创建的时候都会常见一个monitor监视器,在使用synchronized代码块的时候,会在代码块的前后产生一个monitorE ...

  10. C#两行代码实现三维地球

    一.             为什么要用三维地球? 三维地球是地理信息技术的一个重要发展方向,相比较二维地图技术,三维地球最大的特点是更直观更形象地表达地理信息和空间上的方位.我们可以在三维气象模拟. ...