当前位置: 首页 > news >正文

Java项目如何打jar包?

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.dtcms.com/a/101842.html

相关文章:

  • 算法--递归、搜索与回溯
  • 特征降维
  • WebAssembly,突破前端性能优化的方案
  • Windows11系统下python虚拟环境管理独家心得
  • 学习threejs,使用多面体(IcosahedronGeometry、TetrahedronGeometry、OctahedronGeometry等)
  • ESP32-CAM对接阿里云平台数据透传
  • 文件 I/O 系统调用的内部机制
  • C语言数据结构:队列的操作实现
  • 【算法学习计划】贪心算法(中)
  • INFINI Console 极限控制台密码忘记了,如何重置?
  • 本科中厂Java后端干两年半想换岗,担心就业面和技术门槛如何规划未来?
  • Docker:ERROR [internal] load metadata for docker.io/library/java:8-alpine问题解决
  • 漂流瓶与灯塔的约定——两台电脑的跨海通信物语
  • 程序员面试金典 17.18 -- 摩尔投票法
  • MySQL 高效 SQL 使用技巧详解
  • 6. 王道_网络协议
  • 利用Linux的SPI子系统和SPI总线写出SPI设备(DAC模块)的驱动
  • 精确截图工具:基于 Tkinter 和 PyAutoGUI 的实现
  • Docker实现MySQL主从复制配置【简易版】
  • linux 部署Jumpserver(堡垒机)
  • 音视频(二)ffmpeg编译及推流
  • yum repolist all全部禁用了 怎么办
  • 【Ragflow】6. Ragflow-plus重磅更新:增加用户后台管理系统
  • IIC协议以及STM32IIC的特性和架构
  • Redis-05.Redis常用命令-哈希操作命令
  • 流影---开源网络流量分析平台(三)(管理引擎部署)
  • Redis:事务
  • 2025前端八股文终极指南:从高频考点到降维打击的面试突围战
  • Nginx — Nginx版本升级
  • 美甲预约管理系统基于Spring Boot SSM