zoukankan      html  css  js  c++  java
  • springboot以jar包运行

    springboot以jar包运行

      公司的springboot项目本来是打war包的,突然要求改成jar包,一路上碰到一些坑,在此记录一下。

    一、pom文件配置

      1、打包方式改成jar

    <packaging>jar</packaging>

      2、配置可执行jar包的maven插件

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <!-- 如果有依赖外部jar,则必须加上此配置includeSystemScope-->
                    <configuration>
                        <includeSystemScope>true</includeSystemScope>
                    </configuration>
                </plugin>
            </plugins>
        </build>

      3、引入外部jar依赖(可选)

      如果项目中引入了外部jar,可在项目根目录创建lib文件夹,将jar包放入lib中:

      

      然后在pom文件中引入jar包:

     

      PS:如果项目以war的形式打包,并且引入了外部jar,则maven插件的配置如下

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <webResources>
                            <resource>
                                <directory>${project.basedir}/lib</directory>
                                <targetPath>WEB-INF/lib</targetPath>
                                <includes>
                                    <include>**/*.jar</include>
                                </includes>
                            </resource>
                        </webResources>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    二、打包运行

      1、打包

      打包命令,很简单:

    mvn install

      2、运行

      在生产和测试环境,一般都需要保持进程一直在后台运行,断开终端也不中断,则需要执行以下命令:

    nohup java -jar test.jar &>>log.out & 

     三、配置文件优先级

      spring boot会按以下顺序去寻找配置文件:

      1、“当前目录”的/config文件夹下

      2、“当前目录”下

      3、classpath的/config文件夹下

      4、classpath下

      注意事项:

    • 当前目录指的是执行java命令所在目录,如果是通过shell脚本执行的java命令,则当前目录指shell脚本所在目录,如果在shell脚本中cd到某一目录再执行的java命令,则当前目录就指cd后的目录。
    • 不同优先级的配置文件都能被读到,但相同的配置项,优先级高的配置文件的配置会覆盖优先级低的配置文件的配置。
    • jar包内的配置文件不方便修改,生产上我们一般会将配置文件放在jar包外。

      生产上可以直接将配置文件放在jar包所在目录同级的config目录,然后在脚本中cd到jar包所在目录,执行java命令就可以读到配置文件啦。

    参考:https://www.cnblogs.com/taiyonghai/p/9561334.html

  • 相关阅读:
    Docker(五):Dockerfile
    Docker(四):Docker常用命令
    CentOS搭建NodeJs服务器—Mongodb安装
    CentOS7 yum 安装git
    Linux kswapd0 进程CPU占用过高
    数据库-最开始的数据库建立
    小程序-自定义组件数据传递
    jQuery-很上头的语言基础整理
    小程序-自定义组件理解
    vue中图片预览(v-viewer库使用)
  • 原文地址:https://www.cnblogs.com/xiaohang123/p/14945194.html
Copyright © 2011-2022 走看看