maven打包springboot项目时将lib和resources单独打包出来。并使用bat/sh 命令启动项目

1、我的项目目录结构

2、在maven的pom.xml 文件添加build 插件

<build>
    <finalName>${jar.name}</finalName>
    <plugins>
        <!-- 打jar包的插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib</classpathPrefix>
                        <mainClass>com.paas.gateway.PaasGatewayApplication</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>./</Class-Path>
                    </manifestEntries>
                </archive>
                <excludes>
                        <exclude>*.properties</exclude>
                        <exclude>*.yml</exclude>
                </excludes>
            </configuration>
        </plugin>
        <!-- 配置将jar包和外部配置等文件整体打包 -->
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <!--jar包名称 -->
                <finalName>${project.artifactId}-${project.version}</finalName>
                <!--描述文件路径 -->
                <descriptors>
                    <descriptor>src/assembly/assembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-zip</id>
                    <!-- 绑定到package生命周期阶段上 -->
                    <phase>package</phase>
                    <goals>
                        <!-- 只运行一次 -->
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3、新建 assembly.xml文件

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
   <id>runtime</id>
   <formats>
      <format>zip</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
      <fileSet>
         <directory>${project.basedir}/src/main/scripts</directory>
         <outputDirectory></outputDirectory>
         <fileMode>0755</fileMode>
         <includes>
            <include>**.sh</include>
            <include>**.bat</include>
         </includes>
      </fileSet>
      <fileSet>
         <directory>${project.basedir}/target/classes</directory>
         <outputDirectory>config</outputDirectory>
         <fileMode>0644</fileMode>
         <includes>
            <include>*.properties</include>
            <include>*.yml</include>
         </includes>
      </fileSet>
      <fileSet>
         <directory>${project.basedir}/target</directory>
         <outputDirectory>/</outputDirectory>
         <fileMode>0755</fileMode>
         <includes>
            <include>${project.build.finalName}.jar</include>
         </includes>
      </fileSet>
   </fileSets>
   <dependencySets>
      <dependencySet>
         <outputDirectory>lib</outputDirectory>
         <!-- 是否把当前项目的输出jar包并使用,true则会把当前项目输出为jar包到输出目录,false不输出 -->
         <scope>runtime</scope>
         <excludes>
            <exclude>${groupId}:${artifactId}</exclude>
         </excludes>
      </dependencySet>
   </dependencySets>
</assembly>

4、打包生成的结果

5、windows,.bat运行项目

echo off
chcp 65001
set i=3
:restart
start /b /wait jre1.8.0_331/bin/java -jar -Xmx256m -Xms128m -Dfile.encoding=utf-8 -Dspring.config.location=classpath:/config/application.yml xxxxx.jar
echo "遇到错误停止运转10秒后自动重启"
timeout /t 10
if %i% GTR 0 (
    set /a i = %i% - 1
    goto restart
)
pause

6、linux,.sh运行项目

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=xxxxx.jar

#使用说明,用来提示输入参数
echo "Usage: sh startup.sh start"

#检查程序是否在运行
is_exist() {
    pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}' `
    #如果不存在返回1,存在返回0
    if [ -z "${pid}" ]; then
      return 1
    else
      return 0
    fi
}

#启动方法
is_exist
if [ $? -eq "0" ]; then
 echo "${APP_NAME} is already running. pid=${pid} ."
else
java -jar -Xmx256m -Xms128m -Dfile.encoding=utf-8 -Dspring.config.location=classpath:/config/application.yml $APP_NAME
fi

echo "start success"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值