Java程序打jar包(包含作者各种踩坑案例,力求为大家避雷)

news2024/9/20 8:03:18

一、诉求

将一个spring boot项目打包成一个jar包,直接在windows或者linux系统下直接命令行运行。

二、配置步骤

1、编写assembly.xml配置文件(放在pom.xml同级目录)

<?xml version="1.0"?>
<assembly>
    <id>Test-v1.0</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

<!--注-->
(1)<includeBaseDirectory>:这个元素指定了在打包时是否包含基础目录。设置为false意味着不会将构建目录(${project.build.directory})本身作为打包的一部分,而是只包含其下的文件和目录。
(2)<directory>:指定了源目录的路径,这里使用了Maven属性${project.build.directory},它通常指向项目的target目录,即Maven构建输出的目录。
(3)<outputDirectory>:定义了这些文件在打包文件中的目标目录。这里设置为/,意味着这些文件将被放置在打包文件的根目录下。
(4)<includes>:定义了哪些文件应该被包含在打包中。这里通过<include>*.jar</include>指定了所有.jar文件都应该被包含。

2、在pom.xml文件中配置依赖(此处只罗列打包用到的依赖)

<properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <java.version>8</java.version>
     <maven.compiler.source>8</maven.compiler.source>
     <maven.compiler.target>8</maven.compiler.target>
     <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
     <maven-assembly-plugin.version>2.2.1</maven-assembly-plugin.version>
     <maven-jar-plugin.version>2.4</maven-jar-plugin.version>
     <maven-surefire-plugin.version>2.12.4</maven-surefire-plugin.version>
</properties>


			<plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>application.yml</exclude>
                        <exclude>font/</exclude>
                    </excludes>
                </configuration>
            </plugin>
            
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.1.RELEASE</version>
                <configuration>
                    <!-- 工程主入口-->
                    <mainClass>com.demo.AnalysisApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <finalName>testProject</finalName>
                            <descriptors>
                                <descriptor>assembly.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
          

3、正式开始打包(非常简单)

第一步:打开IDEA右侧的maven菜单栏

在这里插入图片描述

第二步:点击clean

在这里插入图片描述

第三步:点击package

在这里插入图片描述

第四步:命令行输出打包成功,在target目录下即可看到jar包

在这里插入图片描述

通过命令行查看jar包中包含的文件

jar tf your-jar-file.jar

注意此处有许多坑:
1、注意mainClass com.demo.AnalysisApplication这里的主程序入口路径有没有写错!
2、注意通过此方法打包的jar是没有application.xml配置文件的,需要运行jar包时命令行进行输入参数使用!

4、运行jar包

java -jar ./test-v1.0.jar --spring.config.location=./application.yml

结束!撒花~~作者踩了两天的坑才总结出来的,希望有用!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GAN生成器好坏之评价方法

我们产生出来的生成器它好或者是不好。要 评估一个生成器的好坏&#xff0c;最直觉的做法也许是找人来看生成器产生出来的图片到底像不像真 实的图片。所以其实很长一段时间&#xff0c;尤其是人们刚开始研究生成式技术的时候&#xff0c;很长一段时间 没有好的评估方法。那时候…

群晖NAS安装(一)

主要教程参考 https://zhuanlan.zhihu.com/p/515187738?utm_id0&wd&eqide69f50bb0000263900000006645b5680 系统是DS3617xs DSM6.1.3 一 准备工作 旧16G U盘一个 软件: diskgenius 分区工具 win32diskimager 写入工具 chipeasy或者chipgenius 识别工具 二 安装 分区…

log4j2 与 log4j使用时的几点小区别 - log4j2上手说明

虽然log4j2 目前还是beta版&#xff0c;不过OneCoder已经忍不住要尝试一下。跟使用log4j 比起来&#xff0c;上手上主要的区别有。 1、依赖的jar包。使用slf4jlog4j2 时&#xff0c;依赖的jar包如下&#xff1a;( gradle配置&#xff0c;Maven对照修改即可) dependencies{ com…

SAP与湃睿PLM系统集成案例

一、项目背景 浙江某家用电机有限公司, 该公司的产品涵盖洗衣机、‌空调、‌冰箱及厨房用具等家电电机的制造&#xff0c;‌具备年产4600万台电机的生产能力&#xff0c;‌是中国最大的家电电机生产基地之一。 为确保工艺路线信息在设计与生产执行层面的无缝传递&#xff0…

python多进程

文章目录 1、前言2、示例3、参考 1、前言 python中使用多进程&#xff0c;可以加快代码的运行速度&#xff0c;更高效地进行相关工作。 2、示例 使用蒙特卡洛方法计算 π \pi π来进行使用多进程前后代码运行速率的对比&#xff1b; import random import multiprocessing as…

信也科技基于 Apache SeaTunnel金融场景的应用实践探索

前言 作者&#xff1a;朱俊&#xff0c;信也科技&#xff0c;数据开发专家 离线开发一直是数据仓库建设中重要的一个环节。信也科技之前基于Azkaban构建了离线任务调度与开发平台&#xff0c;承载了公司90%以上的离线任务调度需求&#xff0c;以及玄策变量平台的每日变量跑批产…

爵士编曲:如何编写爵士鼓

音源选取 使用ssd鼓写爵士乐&#xff0c;使用其中的豪华爵士音源&#xff0c;然后选其中的第一个或第二个都可以。 或者用add鼓studio drummer中的爵士鼓也可以 ​Cubase图示 用swing的律动把叮叮镲写上 然后第三拍加上踩镲

【截图服务 +打包】pkg打包 puppeteer

目录 最后结论 遇到的问题与解决 版本匹配问题 参考文档 最后结论 pkg -t win --public ./screenshots.js --output ./dist/screen.exe 服务启动&#xff1a; postman调用 &#xff1a; 遇到的问题与解决 版本匹配问题 pkg 这里说的是v3.5,实际装的是5.8.1&#xff0c;…

【ArcGIS Pro实操第二期】最小成本路径(Least-cost path)原理及实操案例

ArcGIS Pro实操第一期&#xff1a;最小成本路径原理及实操案例 概述&#xff08;Creating the least-cost path&#xff09;1.1 原理介绍1.2 实现步骤1.3 应用案例 2 GIS实操2.1 工具箱简介2.1.1 成本路径&#xff08;Cost path&#xff09;2.1.2 成本距离&#xff08;Cost dis…

Cesium 展示——格式化时间控件信息

文章目录 需求分析需求 如图,我们在 Cesium 初始化后如图一展示,展示的是UTC的时间,而且是英文,如何将该控件进行格式化一下,展示当前的北京时间呢?分析 初始化 Cesiumconst fetchData = () => {

【LabVIEW学习篇 - 20】:人机界面交互设计04

文章目录 声音播放自定义控件自定义控件创建过程演示 选项卡、子面板、分隔栏 声音播放 有时系统检测到某些事件发生时&#xff0c;需要通过声音去传递信息&#xff0c;因此播放声音也是一种重要的交互方式&#xff0c;如系统检测到异常报警时&#xff0c;需要放报警声音来通知…

flutter Image

Flutter中&#xff0c;Image是一个用于显示图片的控件&#xff0c;可以显示网络图片、本地图片以及Asset中的图片。Image控件支持多种常见的图片格式&#xff0c;例如PNG、JPEG、GIF等。 const Image({super.key,required this.image,this.frameBuilder,this.loadingBuilder,th…

用“黑科技”书写“黑神话” | 基于RK3576核心板的三维扫描仪应用方案

《黑神话&#xff1a;悟空》作为国内首款3A游戏大作&#xff0c;上线仅10天全球发行量就已超过1700万份&#xff0c;不论您是否是游戏玩家&#xff0c;相信您都能在各种新闻、宣传和活动中感受到这款游戏的热度。在游戏的众多亮点中&#xff0c;“细腻的场景设计与对名胜古迹的…

3个永不过时的妙招,恢复苹果手机视频不是问题

苹果手机的视频功能较为出色&#xff0c;使用苹果手机拍摄的视频更加真实、清晰&#xff0c;因此许多人会选择使用苹果手机来记录生活点滴。但是&#xff0c;如果我们不小心删除了苹果手机视频&#xff0c;有什么方法可以让这些“生活的回忆”重现呢&#xff1f;别担心&#xf…

拆解一个不靠烧广告的宠物站的流水成长流史丨出海笔记

最近后台收到会员的私信&#xff0c;说宠物投放广告ROI很低。秉承互助分享精神&#xff0c;我们也加入寻找突破口&#xff0c;看看别人的宠物网站是怎么做的。 之前出海笔记分享过 找竞对不能只找头部卖家&#xff0c;所以我们这次选取的是一个接地气的宠物网站alldogboots进行…

torchvision数据集使用

文章目录 一、下载torchvision中的数据集文件二、断点知识点三、数据集形式建立四、展示数据集中的图片 一、下载torchvision中的数据集文件 这段代码是使用PyTorch的torchvision库来加载CIFAR-10数据集。 import torchvision train_set torchvision.datasets.CIFAR10(root&…

EasyExcel 文件导出:表头与内容样式简单设置

文章目录 EasyExcel 文件导出 - 最终效果使用的 EasyExcel的版本设置表头样式和内容样式设置自动列宽 EasyExcel 文件导出 - 最终效果 具体的效果可通过修改代码来自行调整。经过调整后的样式与默认样式相比&#xff0c;美观程度大幅提升。 下面是默认的样式。丑的一批。 使用…

FreeRTOS学习笔记(一)初认RTOS

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、RTOS的引入二、Free RTOS的基本内容2.1 FreeRTOS的特点2.2 Free RTOS编程风格2.3 Free RTOS的配置文件 前言 笔者在去年曾经开始过rtos的学习&#xff08;虽…

模型中间部分的卷积可视化

整体代码如下&#xff1a; def forward(self, x):x self.conv1(x)x1 xout_img3 x1.squeeze()print(out_img3.shape)print("经过第一个卷积之后的输出&#xff1a;",x.shape) import yaml from omegaconf import OmegaConf from pathlib import Path from PIL imp…

景联文科技:提供高质量多模态数据标注,推动智能化转型

随着人工智能技术的快速发展&#xff0c;多模态数据标注成为推动智能系统更深层次理解和应用的关键技术之一。 作为行业领先的多模态数据标注服务商&#xff0c;景联文科技凭借其在技术、流程和人才方面的综合优势&#xff0c;推出了全面的多模态标注解决方案&#xff0c;助力…