Java项目如何打jar包?

news2025/4/1 13:44:16

1.java把项目打包成jar
步骤一、IDEA -> File -> Project Structure -> Artifacts -> + -> JAR -> From moduls with dependencies... -> 选择 Module 和 Main Class -> 选择 JAR files from libraries
JAR files from libraries 解释
extract to the target JAR :假如项目引入了第三方Jar,会将第三方Jar解压并合并到当前项目进行打包,会生成一个较大的jar包。
copy to the output directory and link via manifest:假如项目引入了第三方Jar,并不会将第三方Jar打包到当前项目的Jar,而是选择分开。
然后Apply -> ok 进行保存。

步骤二、IDEA -> Build -> Build Artifacts -> 选择刚刚创建的Artifact -> Build / Rebuild,在项目中会产生一个目录out -> artifacts -> [artifact name]_jar -> [artifact name].jar

2.将本地jar引入到java工程中的三种方式
方式一、IDEA -> File -> Project Structure -> Modules -> Dependencies -> + -> JARs or Directories
方式二、如要添加的jar文件较多,可创建目录,例:resources->libs,然后用方式一,选择此目录。
方式三、如果项目是maven工程,可以通过修改pom文件,将本地jar引用工程中,如下所示:

<dependency>
  <groupId>com.sun.jdmk</groupId>
  <artifactId>jmxtools</artifactId>
  <version>1.2.1</version>
  <scope>system</scope>
  <systemPath>D:/jmxtools-1.2.1.jar</systemPath>
</dependency>

 解释
<scope>system</scope>告诉Maven不要去中央仓库或远程仓库中寻找依赖,而是使用项目中指定路径的jar文件
<systemPath>D:/jmxtools-1.2.1.jar</systemPath>指定系统中jar文件的路径。


3.java maven项目打jar包发布(精简版)

先clean再package
target文件夹下面有生成一个jar包

参考:

Maven项目打包为jar的几种方式_maven打包本地jar包-CSDN博客

解释:

1. maven-compiler-plugin(Java 编译插件)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.7</source>   <!-- 需修改:Java 源码版本 -->
        <target>1.7</target>   <!-- 需修改:编译目标版本 -->
        <encoding>UTF-8</encoding> <!-- 一般无需修改 -->
    </configuration>
</plugin>

 2. maven-jar-plugin(生成 JAR 包插件)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>      <!-- 自动生成 Class-Path -->
                <classpathPrefix>lib/</classpathPrefix> <!-- 依赖库路径前缀 -->
                <mainClass>com.yourpakagename.mainClassName</mainClass> <!-- 需修改:主类 -->
            </manifest>
        </archive>
    </configuration>
</plugin>

需要修改的地方
  • <mainClass>:替换为你的项目启动类全限定名。
    例如:com.example.MainApp

3. maven-dependency-plugin(依赖处理插件)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy</id>
            <phase>install</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

要修改的地方
  • <outputDirectory>(可选):如果你希望依赖库输出到其他目录,调整路径。
    默认 ${project.build.directory}/lib 会生成到 target/lib,与 classpathPrefix 一致,通常无需修改。

 

完整配置注意事项

  1. 依赖库与 Class-Path 的匹配

    • maven-dependency-plugin 会将依赖复制到 target/lib 目录。

    • maven-jar-plugin 生成的 MANIFEST.MF 中的 Class-Path 会以 lib/ 开头,确保路径一致。

 

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

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

相关文章

大模型架构记录13【hr agent】

一 Function calling 函数调用 from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv())from openai import OpenAI import jsonclient OpenAI()# Example dummy function hard coded to return the same weather # In production, this could be your back…

conda 清除 tarballs 减少磁盘占用 、 conda rename 重命名环境、conda create -n qwen --clone 当前环境

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 conda clean --tarballsconda rename 重命名环境conda create -n qwen --clone …

pycharm相对路径引用方法

用于打字不方便&#xff0c;以下直接手写放图&#xff0c;直观理解

新能源智慧灯杆的智能照明系统如何实现节能?

叁仟新能源智慧灯杆的智能照明系统可通过以下多种方式实现节能&#xff1a; 智能调光控制 光传感器技术&#xff1a;在灯杆上安装光传感器&#xff0c;实时监测周围环境的光照强度。当环境光线充足时&#xff0c;如白天或有其他强光源时&#xff0c;智能照明系统会自动降低路…

Jenkins教程(自动化部署)

Jenkins教程(自动化部署) 1. Jenkins是什么&#xff1f; Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;广泛用于项目开发&#xff0c;具有自动化构建、测试和部署等功能。Jenkins用Java语言编写&#xff0c;可在Tomcat等流行的servlet容器中运行&…

行业智能体大爆发,分布式智能云有解

Manus的一夜爆红&#xff0c;在全球范围内引爆关于AI智能体的讨论。 与过去一般的AI助手不同&#xff0c;智能体&#xff08;AI Agent&#xff09;并非只是被动响应&#xff0c;而是主动感知、决策并执行的应用。Gartner预测&#xff0c;到2028年&#xff0c;15%的日常工作决策…

日语Learn,英语再认识(5)

This is a dedicated function — it exists solely to solve this case. This is a dedicated function. It’s a dedicated method for solving this case. 其他备选词&#xff08;但没dedicated精准&#xff09;&#xff1a; special → 含糊&#xff0c;有时只是“特别”…

【区块链安全 | 第十四篇】类型之值类型(一)

文章目录 值类型布尔值整数运算符取模运算指数运算 定点数地址&#xff08;Address&#xff09;类型转换地址的成员balance 和 transfersendcall&#xff0c;delegatecall 和 staticcallcode 和 codehash 合约类型&#xff08;Contract Types&#xff09;固定大小字节数组&…

音视频入门基础:MPEG2-TS专题(25)——通过FFmpeg命令使用UDP发送TS流

一、通过FFmpeg命令使用UDP发送TS流 通过以下FFmpeg命令可以将一个mp4文件转换为ts封装&#xff0c;并基于UDP发送&#xff08;推流&#xff09;&#xff1a; ffmpeg.exe -re -i input.mp4 -vcodec copy -acodec copy -f mpegts udp://127.0.0.1:1234 其中&#xff1a; “in…

Error in torch with streamlit

报错信息: This is the error which is a conflict between torch and streamlit: Examining the path of torch.classes raised: Tried to instantiate class path.path’, but it does not exist! Ensure that it is registered via torch::class Steps to reproduce: py…

网络基础知识介绍

目录 一、计算机网络背景与发展 1.1 计算机网络的背景 ​编辑1.2 计算机网络的发展历程 二、网络协议 2.1 认识网络协议 2.3 协议分层 2.4 OSI七层模型 2.5 TCP/IP 五层(或四层)模型 三、网络传输基本流程 3.1 网络传输流…

MIPS-32架构(寄存器堆,指令系统,运算器)

文章目录 0 Preview:寄存器32通用0 $zero1 $at2—3 \$v0-$v14—7 \$a0-$a38—15 \$t0-$t716—23 \$s0-$s724—25 \$t8-$t926—27 \$k0-$k128 $gp29 $sp30 $fp 指令系统运算存储器 0 Preview: MIPS架构有32位版本和64位版本&#xff0c;本文介绍32位版本 寄存器 正如笔者曾说…

【什么是机器学习——多项式逼近】

什么是机器学习——多项式逼近 机器学习可以分成三大类别,监督学习、非监督学习、强化学习。三大类别背后的数学原理不同。监督学习使用了数学分析中的函数逼近方法和概率统计中的极大似然方法;非监督学习使用聚类和EM算法;强化学习使用马尔可夫决策过程的想法。 机器学习的…

《午夜地铁的幽灵AP》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章&#xff1a;末班车的二进制月光****第二章&#xff1a;ESP32的赛博墓志铭****第三章&#xff1a;都市传说与CRC校验****第四章&#xff1a;数字孪生的献祭仪式****终章…

创作领域“<em >彩</em><em>票</em><em>导</em><em>师</em><em>带</em><em>玩</em><em>群

天光揉碎最后一块夜斑&#xff0c;露珠压弯草叶的脆响惊醒了沉睡的巷子。青灰雾霭中&#xff0c;老墙上的爬山虎在打哈欠&#xff0c;卷曲的藤须滴落隔夜的月光。sFsTU

Spring Cloud Gateway中GatewayFilter Factories(网关过滤工厂)的详细介绍

文章目录 1、网关过滤工厂介绍2、 GatewayFilter 过滤器的基本配置3、 Spring Cloud Gateway 内置 GatewayFilter Factories3.1、AddRequestHeader GatewayFilter3.2、AddResponseHeader GatewayFilter3.3、AddRequestParameter GatewayFilter3.4、RewritePath GatewayFilter3.…

微服务架构:构建可持续演进的微服务架构的原则与实践指南

引言&#xff1a;微服务的价值锚点 某物流公司微服务化后&#xff0c;订单履约周期从2小时缩短至15分钟&#xff0c;但技术债务却以每年200%的速度增长。这个案例揭示了一个关键认知&#xff1a;‌微服务架构的成败不在于技术实现&#xff0c;而在于是否建立有效的演进机制‌。…

C++的四种类型转换

文章目录 const_cast:去掉常量类型的类型转换static_cast:提供编译器认为安全的类型转换&#xff08;在编译阶段完成类型转换&#xff09;reinterpret:类似c风格的强制类型转化dynamic_cast:主要用在继承结构里&#xff0c;可以支持RTTI类型识别的上下转换dynamic_cast<>…

《Python实战进阶》No37: 强化学习入门加餐版3 之 Q-Learning算法可视化升级

连续第4篇文章写Q-Learning算法及可视化 Q-Learning强化学习算法在迷宫寻路中的应用 引言 强化学习是机器学习的一个重要分支&#xff0c;其核心理念是通过与环境的交互来学习最优策略。在上三篇文章中&#xff0c;《Python实战进阶》No37: 强化学习入门&#xff1a;Q-Learn…

漏洞挖掘---灵当CRM客户管理系统getOrderList SQL注入漏洞

一、灵当CRM 灵当CRM是上海灵当信息科技有限公司旗下产品&#xff0c;适用于中小型企业。它功能丰富&#xff0c;涵盖销售、服务、财务等管理功能&#xff0c;具有性价比高、简洁易用、可定制、部署灵活等特点&#xff0c;能助力企业提升经营效益和客户满意度。 二、FOFA-Sear…