JAVA项目通过IDEA如何构建可执行JAR

这篇具有很好参考价值的文章主要介绍了JAVA项目通过IDEA如何构建可执行JAR。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开发JAVA工程代码(main方法启动)如何构建出可以通过java -jar命令直接执行的jar?如果工程中依赖其他jar又如何处理?本文即针对以上两点通过IDEA开发工具来做一个简单的分析和尝试,测试如下四种方法,如有瑕疵请轻喷。

1.通过IDEA直接构建可执行jar

如下所示通过IDEA创建一个本地JAVA工程,此处工程名JavaPackage1,在lib引入一个hutool-all-5.3.7.jar作为测试,目录结构如下点击运行JPackage1正常打印日期。

idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
如何通过IDEA直接构建可执行jar呢?具体步骤如下:

  1. 选择File -> Project Structure
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

  2. 选择Arifacts->ADD->JAR->Form modules with dependencies
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

  3. 在Main Class栏选择要打包成jar文件的java类,点击OK
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

  4. 出现如下界面,点击ok。最后构建完成jar的启动相关信息会写入到META-INF/MANIFEST.MF清单文件中。
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

  5. 点击Build->Build Artifacts,参照以下两张图,最后在\out\artifacts\目录下生成j可执行ar文件
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

  6. 最后通过在cmd窗口直接执行java -jar JavaPackage1.jar 运行正常输出hutool工具类获取的日期
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

后续若修改代码后可直接执行Build->Build Artifacts生成jar,不需要再做前面的配置步骤。同时解压该生成的jar可以发现依赖的hutool工具类是以class文件全部打入进来了。其中生成的MANIFEST.MF文件很简单就指明了Main-Class启动类信息。
idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

2.通过ANT构建可执行jar

  • IDEA新建JAVA工程,此处新建工程名JavaPackage2,并在lib下引入hutool依赖jar
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
  • 在项目根目录下编写ant.xml(文件名无要求)
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
    xml中内容如下,具体语法可参考官网学习
<?xml version="1.0" encoding="UTF8"?>
<project name="buildJar" default="jar" basedir=".">
    <tstamp>
        <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
    </tstamp>
    <!-- 定义:打包生成的jar的名字 -->
    <property name="jar.name" value="JavaPackage2.jar"/>
    <!-- 定义:主类路径 -->
    <property name="main.class" value="com.xren.jpackage2.JPackage2"/>
    <property name="build.dir" value="${basedir}/build" />
    <property name="classes.dir" value="${basedir}/classes" />
    <property name="lib.dir" value="${basedir}/lib" />
    <!--阶段1.删除之前生成的jar包-->
    <target name="clean">
        <delete dir="${build.dir}"/>
        <delete dir="${classes.dir}"/>
    </target>
    <!--定义依赖jar路径-->
    <path id="lib.path">
        <fileset dir="${lib.dir}">
            <include name="*.jar"/>
        </fileset>
    </path>
    <!--阶段2.编译java文件-->
    <target name="compile" depends="clean">
        <!--创建classes文件夹-->
        <mkdir dir="${classes.dir}"/>
        <!--编译java文件-->
        <javac srcdir="${basedir}/src" destdir="${classes.dir}" encoding="UTF8">
                <!--编译依赖jar -->
                <classpath refid="lib.path"/>
        </javac>
    </target>
    <!--阶段3.生成可运行的jar包-->
    <pathconvert property="relate.classpath" pathsep=" ">
        <mapper>
            <chainedmapper>
                <flattenmapper />
                <globmapper from="*" to="lib/*" />
            </chainedmapper>
        </mapper>
        <path refid="lib.path" />
    </pathconvert>
    <target name="jar" depends="compile">
        <mkdir dir="${build.dir}"/>
        <!--指定清单文件 -->
        <manifest file="${build.dir}/MANIFEST.MF">
            <!--主类路径-->
            <attribute name="Main-class" value="${main.class}"/>
            <!-- 引入依赖jar-classpath -->
            <attribute name="Class-Path" value="${relate.classpath}" />
            <attribute name="Built-Date" value="${TODAY}" />
        </manifest>
        <jar destfile="${build.dir}/${jar.name}"
             basedir="${classes.dir}"
             manifest="${build.dir}/MANIFEST.MF">
        </jar>
        <!--拷贝依赖jar到当前build目录 -->
        <copy todir="${build.dir}/lib" >
            <fileset dir="${lib.dir}"></fileset>
        </copy>
    </target>
</project>
  • 添加ant.xml文件
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
  • 选中buildJar、点击执行,而后便会在build目录下生成一个可执行的jar
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
  • 执行效果如下
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

此方式生成的jar需要和同级目录下的lib依赖引入才能运行成功,原因是在ant.xml文件中打包时已经在清单文件MANIFEST.MF里固定了lib路径。
idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
如果想将外部的jar全部打入到jar中,需要在xml中做如下单独引入,最后jar可直接运行。xml配置及包结构如下:

 <target name="jar" depends="compile">
        <mkdir dir="${build.dir}"/>
        <!--指定清单文件 -->
        <manifest file="${build.dir}/MANIFEST.MF">
            <!--主类路径-->
            <attribute name="Main-class" value="${main.class}"/>
        </manifest>
        <jar destfile="${build.dir}/${jar.name}"
             basedir="${classes.dir}"
             manifest="${build.dir}/MANIFEST.MF">
            <zipfileset src="${lib.dir}/hutool-all-5.3.7.jar"/>
        </jar>
    </target>

idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

3.通过maven-assembly插件构建可执行jar

  • 新建Java-maven工程,通过pom引入hutool工具库依赖,此处新建工程名JavaPackage3
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
    pom.xml配置
	<dependencies>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.7</version>
        </dependency>
    </dependencies>

如果hutool-all.jar依赖下载不了请检查IDEA的maven配置是否正确。
idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

  • Pom中引入maven-assembly-plugin插件打包
	<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>com.xren.jpackage3.JPackage3</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>
  • 执行maven-package,而后在target目录下会生成一个以jar-with-dependencies结尾的可直接执行jar,另外一个jar里面没有依赖不可执行
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
  • 该可执行jar的目录结构和清单文件MANIFEST.MF内容如下
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

通过Maven-assembly插件构建的jar和ant构建出来的jar中结构基本一致,将依赖jar以class方式加入内容部,同时在打包配置文件中指定清单文件MANIFEST.MF的主启动类Main-Class。

4.通过maven-shade插件构建可执行jar

  • 新建Java-maven工程,通过pom引入hutool工具库依赖,此处新建工程名JavaPackage4
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
  • Pom文件中引入maven-shade-plugin插件
	<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.xren.jpackage4.JPackage4</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  • 执行maven package,而后会在target目录下生成一个可执行JavaPackage4-1.0-SNAPSHOT.jar
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
  • 执行该jar,正常运行
    idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

利用maven-shade-plugin构建除了会生成可执行jar,还会在target目录下生成一个以original-开头的原始jar,该jar不可执行内部没有依赖其他,其清单文件MANIFEST.MF如下:
idea如何生成可执行文件,Java,java,intellij-idea,jar,maven
而可执行jar清单文件如下,差别就是多了一个Main-Class
idea如何生成可执行文件,Java,java,intellij-idea,jar,maven

**总结:**综上几种构建可执行jar的方式可知,其都有一个共同点-jar里面有一个包含Main-Class的MANIFEST.MF文件,Main-Class配置指向main方法的主启动类。jar依赖的其他程序会以lib-jar或者class文件的方式包含其中(此文只验证依赖jar,没有验证配置文件依赖)。文章来源地址https://www.toymoban.com/news/detail-756607.html

到了这里,关于JAVA项目通过IDEA如何构建可执行JAR的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA——将Java项目打包成可执行的Jar包

    在Java开发中,我们通常会将我们的项目打包成可执行的Jar包,以便于在其他环境中部署和运行。本文将介绍如何使用IDEA集成开发环境将Java项目打包成可执行的Jar包。 步骤一:配置项目的执行入口 在开始之前,确保你的Java项目中已经配置了一个执行入口类(通常是包含mai

    2024年02月16日
    浏览(43)
  • 【Idea+Maven+Git:构建高效Java项目的强大组合】

    在当今的软件开发世界中,集成开发环境(IDE)、构建工具和版本控制系统是每个项目不可或缺的组成部分。本文将深入探讨这三个工具:IntelliJ IDEA、Maven和Git,以及它们如何协同工作,帮助开发者构建更高效、更可靠的项目。上一篇介绍了Git的分支管理策略,本文将介绍相

    2024年02月20日
    浏览(96)
  • 如何通过idea使用JDK8.0创建Spring项目

            目前 IDEA 进行了优化,所以我们在创建 Spring 项目时会发现,以及不能选择通过 JDK8.0 创建了,这是因为官方已经不再提供 JDK8.0 创建 Spring 项目,我们可以通过修改创建 Spring 项目的路径来解决该问题         在创建 Spring 项目的页面,修改 Server URL 为 https://start.a

    2024年01月22日
    浏览(52)
  • 关于使用maven构建的项目IDEA提示:java: 错误: 不支持发行版本 5

    出现这个问题的主要原因是在maven中没有配置你所需要的jdk版本。解决方案有两种, 方案一:在IDEA中修改编译的jdk版本,需要修改多处,比较复杂,这里不赘述了。 方案二:直接在Maven中配置需要的jdk版本,然后刷新一下Maven就能解决 以上代码是java17,修改成你需要的jdk版本

    2024年02月07日
    浏览(63)
  • 通过IDEA将java程序或者项目打包为jar包(详细步骤)

    通过IDEA将java程序或者项目打包为jar包 文章目录 目录 文章目录 一、使用java语言,编写一个字典(Dict)Demo 二、将Dict程序打包为jar包 代码如下: 1.点击file,点击project structure. 2.点击Artifacts,点击“+”,点击JAR,点击from......dependencies.  3.选择项目位置Module,和程序类Main Class(要

    2024年02月11日
    浏览(62)
  • 通过exe4j将 java 项目(jar)打包成exe可执行文件(详细步骤)

    通过exe4j将 java 项目(jar)打包成exe可执行文件 文章目录 文章目录 一、下载安装 二、使用步骤 下载链接: ej-technologies - Java APM, Java Profiler, Java Installer Builder  安装只需一直下一步即可。 1.输入注册码“L-g782dn2d-1f1yqxx1rv1sqd”。 2.如下图: 3.如下图: 4.如下图: 5.如下图:

    2024年02月16日
    浏览(43)
  • 如何进行Java项目的构建和部署?

    Java项目的构建和部署有多种方式,以下是一般常用的方法: 使用构建工具:常见的Java构建工具包括Apache Maven和Gradle。它们可以自动处理依赖管理、编译、测试和打包等任务,并生成可部署的项目文件。你可以在项目根目录下创建一个适当的构建文件(如pom.xml或build.gradle),

    2024年02月09日
    浏览(30)
  • IDEA如何打开Java项目(案例学习)

    【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我

    2024年02月04日
    浏览(36)
  • IDEA生成可执行jar包

    1. 进入需要打包的项目,选择  最上方菜单栏的 File → Project Structure 2. 选择  左侧菜单栏 Artifacts → +加号 → JAR → from modules with dependencies 3. 选择 入口类 Main Class (点击文件夹图标可以快速选择),点击  OK,OK 4. 返回到IDEA主界面,选择  最上方菜单栏 Build → Build Artifact

    2024年02月19日
    浏览(30)
  • 使用IDEA构建jar然后转执行程序exe的爬坑

    https://download.csdn.net/download/leoysq/87939492                      

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包