idea环境下如何打包可运行jar?

工作中有时候偶尔写一些工具类、小程序,可是java程序员制作一个可运行jar实在折腾,利用idea开发环境,可以快速打包自己的可运行jar。具体怎么操作呢?

创建一个空白的java项目并完成自己的程序开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成java代码:

/*** 测试窗口* @author binbin* @date 2023/9/27 10:29*/
public class InfoFrame extends JFrame {public InfoFrame() {setTitle("System Information");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300, 200);//居中显示Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();setLocation((screenSize.width - getWidth())/2, (screenSize.height - getHeight())/2);//初始化菜单JMenuBar bar = new JMenuBar();JMenu menu = new JMenu("帮助");JMenuItem exitItem = new JMenuItem("退出");exitItem.addActionListener(e -> {System.exit(0);});menu.add(exitItem);bar.add(menu);setJMenuBar(bar);//初始化系统信息JTextArea infoTextArea = new JTextArea(6, 10);infoTextArea.setText(getSystemInfo());infoTextArea.setEditable(false);add(new JScrollPane(infoTextArea));}private String getSystemInfo() {StringBuffer b = new StringBuffer();b.append("系统系统:").append(System.getProperty("os.name")).append("\r\n");b.append("系统版本:").append(System.getProperty("os.version")).append("\r\n");b.append("系统架构:").append(System.getProperty("os.arch")).append("\r\n");b.append("用户名称:").append(System.getProperty("user.name")).append("\r\n");b.append("用户主目录:").append(System.getProperty("user.home")).append("\r\n");b.append("当前工作目录:").append(System.getProperty("user.dir")).append("\r\n");return b.toString();}
}
public class App
{public static void main( String[] args ){EventQueue.invokeLater(() -> {new InfoFrame().setVisible(true);});}
}

代码结构如下:
在这里插入图片描述

引入maven-assembly-plugin插件打包

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.hbin</groupId><artifactId>info</artifactId><version>1.0-SNAPSHOT</version><name>info</name><url>www.binbin.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies><build><plugins><!-- 使用maven-assembly-plugin插件打包 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><!--主类 --><mainClass>org.hbin.App</mainClass></manifest></archive><descriptorRefs><!-- 可执行jar名称结尾--><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>
</project>

在这里插入图片描述

执行maven package

执行maven package命令,target目录将生成一个以jar-with-dependencies结尾的可直接执行jar。
运行命令:

> java -jar info-1.0-SNAPSHOT-jar-with-dependencies.jar

在这里插入图片描述

文档包和源码包

<!--生成doc jar包-->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals><!-- 不让像@Param 这种后面没写值的东西 报错。--><configuration><additionalJOption>-Xdoclint:none</additionalJOption></configuration></execution></executions>
</plugin><!--生成源码jar包-->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><executions><execution><id>attach-sources</id><goals><goal>jar</goal></goals></execution></executions>
</plugin>

下次再有测试、运营或者其他部门的同事找你做工具,知道怎样快速制作可执行jar了吧?

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1798_GNU pdf阅读器evince_支持的格式

全部学习汇总&#xff1a; GreyZhang/g_GNU: After some years I found that I do need some free air, so dive into GNU again! (github.com) 顺着之前的wiki了解的文档&#xff0c;这一次看看evince支持的文件格式。关于这部分&#xff0c;原始的介绍网页链接&#xff1a; A…

CCF CSP认证 历年题目自练Day21

题目一 试题编号&#xff1a; 201909-1 试题名称&#xff1a; 小明种苹果 时间限制&#xff1a; 2.0s 内存限制&#xff1a; 512.0MB 题目分析&#xff08;个人理解&#xff09; 先看输入&#xff0c;第一行输入苹果的棵树n和每一次掉的苹果数m还是先如何存的问题&#xf…

httpserver 下载服务器demo 以及libevent版本的 httpserver

实现效果如下&#xff1a; 图片可以直接显示 cpp h 这些可以直接显示 其他的 则是提示是否要下载 单线程 还有bug 代码如下 先放上来 #include "httpserver.h" #include "stdio.h" #include <stdlib.h> #include <arpa/inet.h> #include…

【逐步剖C】-第十一章-动态内存管理

一、为什么要有动态内存管理 从我们平常的学习经历来看&#xff0c;所开辟的数组一般都为固定长度大小的数组&#xff1b;但从很多现实需求来看需要我们开辟一个长度“可变”的数组&#xff0c;即这个数组的大小不能在建立数组时就指定&#xff0c;需要根据某个变量作为标准。…

【软件测试】自动化测试selenium(二)

文章目录 三. 掌握Selenium常用的API使用1. webdriver API2. 操作测试对象3. 添加等待4. 打印信息5. 浏览器的操作6. 键盘事件7. 鼠标事件8. 定位一组元素9. 多层框架/窗口定位10. 下拉框处理11. 弹窗处理12. 上传文件13. 关闭浏览器14. 切换窗口15. 截图操作 三. 掌握Selenium…

Linux——指令初识

Linux下基本指令 前言一、 ls 指令二、 pwd命令三、cd 指令四、 touch指令五、mkdir指令六、rmdir指令 && rm 指令七、man指令八、cp指令九、mv指令十、cat指令十一、.more指令十二、less指令十三、head指令十四、tail指令总结 前言 linux的学习开始啦&#xff01; 今…

玩转ChatGPT:DALL·E 3生成图像

一、写在前面 好久不更新咯&#xff0c;因为没有什么有意思的东西分享的。 今天更新&#xff0c;是因为GPT整合了自家的图像生成工具&#xff0c;名字叫作DALLE 3。 DALLE 3是OpenAI推出的一种生成图像的模型&#xff0c;它基于GPT-3架构进行训练&#xff0c;但是它的主要目…

Java编程技巧:跨域

目录 1、跨域概念2、后端CORS&#xff08;跨域资源共享&#xff09;配置原理3、既然请求跨域了&#xff0c;那么请求到底发出去没有&#xff1f;4、通过后端CORS&#xff08;跨域资源共享&#xff09;配置解决跨域问题代码4.1、SpringBoot&#xff08;FilterRegistrationBean&a…

Redis与分布式-集群搭建

接上文 Redis与分布式-哨兵模式 1. 集群搭建 搭建简单的redis集群&#xff0c;创建6个配置&#xff0c;开启集群模式&#xff0c;将之前配置过的redis删除&#xff0c;重新复制6份 针对主节点redis 1&#xff0c;redis 2&#xff0c;redis 3都是以上修改内容&#xff0c;只是…

安全学习_开发相关_Java第三方组件Log4jFastJSON及相关安全问题简介

文章目录 JNDI&#xff1a;(见图) Java-三方组件-Log4J&JNDILog4J&#xff1a;Log4j-组件安全复现使用Log4j Java-三方组件-FastJsonFastJson&#xff1a;Fastjson-组件安全复现对象转Json(带类型)Json转对象Fastjson漏洞复现&#xff08;大佬文章 JNDI&#xff1a;(见图) …

僵尸进程的产生与处理

僵尸进程是指在进程结束后&#xff0c;其父进程没有及时处理该进程的终止状态信息&#xff0c;导致该进程的进程描述符仍然存在于系统进程表中&#xff0c;但是已经没有实际的执行代码。这样的进程被称为僵尸进程。 僵尸进程的产生是由于父进程没有及时调用wait()或waitpid()等…

postgresql16-新特性

postgresql16-新特性 any_value数组抽样数组排序 any_value any_value 返回任意一个值 select e.department_id ,count(*), any_value(e.last_name) from cps.public.employees e group by e.department_id ;数组抽样 -- 从数组中随机抽取一个元素 array_sample(数组&#…