你知道springboot+maven的打包骚操作吗?

8 篇文章 0 订阅
6 篇文章 0 订阅

前言

本人在公司担任的活儿比较杂,包括部署上线,调试都是自己干.那么在项目打包部署遇到以下困扰

  1. 项目打包,代码本身不多,但是依赖太重,导致打出的jar包很大,上传到服务器比较慢
  2. 配置文件打包到jar包内部,不便于调试修改

这是一个springboot+maven写的demo,主要演示springboot项目通过maven插件,将依赖与配置文件打包到jar包外部,实现灵活的项目管理.仅供参考学习
方法总比问题多,觉得我这个办法比较low的,请不要往下看

  • 适用场景:内网项目
  • 如果是外网项目建议用更优雅的解决方案,比如使用脚本拉取代码,用配置中心动态修改配置.

一.创建SpringBoot项目

1.用idea新建项目
在这里插入图片描述2.填写项目信息
在这里插入图片描述3.这里勾选spring web 版本选择低版本
在这里插入图片描述

4.选择 项目名,然后finish
在这里插入图片描述
5.新建一个TestController,写先经典的hello world
在这里插入图片描述

package xyz.hashdog.pk;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @RequestMapping("test")
    public String test(){
        return "hello world";
    }
}

6.配置文件改一下端口

server.port=4567

7.启动项目
在这里插入图片描述

8.成功访问接口
http://localhost:4567/test
在这里插入图片描述

二.项目打包

1.执行package打包(默认打包到target目录)
在这里插入图片描述2.修改pom文件
去掉原有的spring-boot-maven-plugin
将pom.xml中的plugin修改为

 <plugins>
            <!-- 依赖包插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/app/lib</outputDirectory>
                            <!-- 是否不包含间接依赖 -->
                            <excludeTransitive>false</excludeTransitive>
                            <!-- 忽略版本 -->
                            <stripVersion>false</stripVersion>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- maven资源文件复制插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <executions>
                    <execution>
                        <id>copy-config</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/app/config</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <exclude>**/*.xml</exclude>
                                        <exclude>**/*.conf</exclude>
                                        <exclude>**/*.properties</exclude>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                            <encoding>UTF-8</encoding>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- 可执行jar插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <outputDirectory>${project.build.directory}/app/bin</outputDirectory>
                    <!--这些配置将写入到MANIFEST.MF文件中-->
                    <archive>
                        <!--指定程序入口-->
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>../lib/</classpathPrefix>
                            <mainClass>xyz.hashdog.pk.PkApplication</mainClass>
                        </manifest>
                        <!-- (配置文件外置目录) -->
                        <manifestEntries>
                            <Class-Path>../config/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <excludes>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.conf</exclude>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*/*.json</exclude>
                    </excludes>
                </configuration>
            </plugin>

        </plugins>

3.执行package,将整个项目打包到app目录下了
在这里插入图片描述

4.将config中properties配置文件端口改为4568,的启动jar文件
在这里插入图片描述5.访问成功
localhost:4568/test
在这里插入图片描述

三.代码参考

https://download.csdn.net/download/corleone_4ever/12378074

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那我来为你介绍一下 Spring Boot、Maven 和 Proguard 打包程序的流程。 首先,Spring Boot 和 Maven 都是针对 Java 应用程序的工具。Spring Boot 是一个快速开发框架,可以帮助开发人员快速构建基于 Spring 的应用程序。Maven 是一个构建工具,可以帮助开发人员自动化构建、测试和部署 Java 应用程序。 Proguard 则是一个 Java 字节码混淆和压缩工具,可以将 Java 应用程序中的类、方法、变量等混淆和压缩,从而增加程序的安全性和运行速度。 接下来,我们来讲一下如何使用 Spring Boot、Maven 和 Proguard 打包程序。 1. 首先,在 pom.xml 文件中添加 Proguard 插件的配置: ```xml <build> <plugins> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.14</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <injar>${project.build.finalName}.jar</injar> <outjar>${project.build.finalName}-pro.jar</outjar> <obfuscate>true</obfuscate> <options> <option>-keep class com.example.** { *; }</option> </options> </configuration> </plugin> </plugins> </build> ``` 这里简单介绍一下配置: - `<injar>`:输入的 jar 包名称,这里使用了 Maven 的变量 `${project.build.finalName}.jar` 表示生成的 jar 包名称。 - `<outjar>`:输出的 jar 包名称,这里使用了 `${project.build.finalName}-pro.jar` 表示混淆后的 jar 包名称。 - `<obfuscate>`:是否开启混淆,默认为 true。 - `<options>`:Proguard 的配置选项,这里我们只保留了 com.example 包下的所有类和方法。 2. 执行 Maven 打包命令: ```bash mvn clean package ``` 执行完成后,会在 target 目录下生成一个混淆后的 jar 包,名称为 `${project.build.finalName}-pro.jar`。 3. 运行混淆后的 jar 包: ```bash java -jar ${project.build.finalName}-pro.jar ``` 这样,就可以运行混淆后的程序了。 以上就是 Spring Boot、Maven 和 Proguard 打包程序的简单流程。需要注意的是,混淆后的程序可能会出现运行异常,需要进行相应的调试和排查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值