国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JAVA項(xiàng)目通過(guò)IDEA如何構(gòu)建可執(zhí)行JAR

這篇具有很好參考價(jià)值的文章主要介紹了JAVA項(xiàng)目通過(guò)IDEA如何構(gòu)建可執(zhí)行JAR。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

開發(fā)JAVA工程代碼(main方法啟動(dòng))如何構(gòu)建出可以通過(guò)java -jar命令直接執(zhí)行的jar?如果工程中依賴其他jar又如何處理?本文即針對(duì)以上兩點(diǎn)通過(guò)IDEA開發(fā)工具來(lái)做一個(gè)簡(jiǎn)單的分析和嘗試,測(cè)試如下四種方法,如有瑕疵請(qǐng)輕噴。

1.通過(guò)IDEA直接構(gòu)建可執(zhí)行jar

如下所示通過(guò)IDEA創(chuàng)建一個(gè)本地JAVA工程,此處工程名JavaPackage1,在lib引入一個(gè)hutool-all-5.3.7.jar作為測(cè)試,目錄結(jié)構(gòu)如下點(diǎn)擊運(yùn)行JPackage1正常打印日期。

idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
如何通過(guò)IDEA直接構(gòu)建可執(zhí)行jar呢?具體步驟如下:

  1. 選擇File -> Project Structure
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

  2. 選擇Arifacts->ADD->JAR->Form modules with dependencies
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

  3. 在Main Class欄選擇要打包成jar文件的java類,點(diǎn)擊OK
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

  4. 出現(xiàn)如下界面,點(diǎn)擊ok。最后構(gòu)建完成jar的啟動(dòng)相關(guān)信息會(huì)寫入到META-INF/MANIFEST.MF清單文件中。
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

  5. 點(diǎn)擊Build->Build Artifacts,參照以下兩張圖,最后在\out\artifacts\目錄下生成j可執(zhí)行ar文件
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

  6. 最后通過(guò)在cmd窗口直接執(zhí)行java -jar JavaPackage1.jar 運(yùn)行正常輸出hutool工具類獲取的日期
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

后續(xù)若修改代碼后可直接執(zhí)行Build->Build Artifacts生成jar,不需要再做前面的配置步驟。同時(shí)解壓該生成的jar可以發(fā)現(xiàn)依賴的hutool工具類是以class文件全部打入進(jìn)來(lái)了。其中生成的MANIFEST.MF文件很簡(jiǎn)單就指明了Main-Class啟動(dòng)類信息。
idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

2.通過(guò)ANT構(gòu)建可執(zhí)行jar

  • IDEA新建JAVA工程,此處新建工程名JavaPackage2,并在lib下引入hutool依賴jar
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
  • 在項(xiàng)目根目錄下編寫ant.xml(文件名無(wú)要求)
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
    xml中內(nèi)容如下,具體語(yǔ)法可參考官網(wǎng)學(xué)習(xí)
<?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">
        <!--創(chuàng)建classes文件夾-->
        <mkdir dir="${classes.dir}"/>
        <!--編譯java文件-->
        <javac srcdir="${basedir}/src" destdir="${classes.dir}" encoding="UTF8">
                <!--編譯依賴jar -->
                <classpath refid="lib.path"/>
        </javac>
    </target>
    <!--階段3.生成可運(yùn)行的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到當(dāng)前build目錄 -->
        <copy todir="${build.dir}/lib" >
            <fileset dir="${lib.dir}"></fileset>
        </copy>
    </target>
</project>
  • 添加ant.xml文件
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
  • 選中buildJar、點(diǎn)擊執(zhí)行,而后便會(huì)在build目錄下生成一個(gè)可執(zhí)行的jar
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
  • 執(zhí)行效果如下
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

此方式生成的jar需要和同級(jí)目錄下的lib依賴引入才能運(yùn)行成功,原因是在ant.xml文件中打包時(shí)已經(jīng)在清單文件MANIFEST.MF里固定了lib路徑。
idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
如果想將外部的jar全部打入到j(luò)ar中,需要在xml中做如下單獨(dú)引入,最后jar可直接運(yùn)行。xml配置及包結(jié)構(gòu)如下:

 <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如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

3.通過(guò)maven-assembly插件構(gòu)建可執(zhí)行jar

  • 新建Java-maven工程,通過(guò)pom引入hutool工具庫(kù)依賴,此處新建工程名JavaPackage3
    idea如何生成可執(zhí)行文件,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依賴下載不了請(qǐng)檢查IDEA的maven配置是否正確。
idea如何生成可執(zhí)行文件,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>
                        <!-- 可執(zhí)行jar名稱結(jié)尾-->
                        <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>
  • 執(zhí)行maven-package,而后在target目錄下會(huì)生成一個(gè)以jar-with-dependencies結(jié)尾的可直接執(zhí)行jar,另外一個(gè)jar里面沒(méi)有依賴不可執(zhí)行
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
  • 該可執(zhí)行jar的目錄結(jié)構(gòu)和清單文件MANIFEST.MF內(nèi)容如下
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

通過(guò)Maven-assembly插件構(gòu)建的jar和ant構(gòu)建出來(lái)的jar中結(jié)構(gòu)基本一致,將依賴jar以class方式加入內(nèi)容部,同時(shí)在打包配置文件中指定清單文件MANIFEST.MF的主啟動(dòng)類Main-Class。

4.通過(guò)maven-shade插件構(gòu)建可執(zhí)行jar

  • 新建Java-maven工程,通過(guò)pom引入hutool工具庫(kù)依賴,此處新建工程名JavaPackage4
    idea如何生成可執(zhí)行文件,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>
  • 執(zhí)行maven package,而后會(huì)在target目錄下生成一個(gè)可執(zhí)行JavaPackage4-1.0-SNAPSHOT.jar
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
  • 執(zhí)行該jar,正常運(yùn)行
    idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

利用maven-shade-plugin構(gòu)建除了會(huì)生成可執(zhí)行jar,還會(huì)在target目錄下生成一個(gè)以original-開頭的原始jar,該jar不可執(zhí)行內(nèi)部沒(méi)有依賴其他,其清單文件MANIFEST.MF如下:
idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven
而可執(zhí)行jar清單文件如下,差別就是多了一個(gè)Main-Class
idea如何生成可執(zhí)行文件,Java,java,intellij-idea,jar,maven

**總結(jié):**綜上幾種構(gòu)建可執(zhí)行jar的方式可知,其都有一個(gè)共同點(diǎn)-jar里面有一個(gè)包含Main-Class的MANIFEST.MF文件,Main-Class配置指向main方法的主啟動(dòng)類。jar依賴的其他程序會(huì)以lib-jar或者class文件的方式包含其中(此文只驗(yàn)證依賴jar,沒(méi)有驗(yàn)證配置文件依賴)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-756607.html

到了這里,關(guān)于JAVA項(xiàng)目通過(guò)IDEA如何構(gòu)建可執(zhí)行JAR的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • IDEA——將Java項(xiàng)目打包成可執(zhí)行的Jar包

    IDEA——將Java項(xiàng)目打包成可執(zhí)行的Jar包

    在Java開發(fā)中,我們通常會(huì)將我們的項(xiàng)目打包成可執(zhí)行的Jar包,以便于在其他環(huán)境中部署和運(yùn)行。本文將介紹如何使用IDEA集成開發(fā)環(huán)境將Java項(xiàng)目打包成可執(zhí)行的Jar包。 步驟一:配置項(xiàng)目的執(zhí)行入口 在開始之前,確保你的Java項(xiàng)目中已經(jīng)配置了一個(gè)執(zhí)行入口類(通常是包含mai

    2024年02月16日
    瀏覽(25)
  • 【Idea+Maven+Git:構(gòu)建高效Java項(xiàng)目的強(qiáng)大組合】

    【Idea+Maven+Git:構(gòu)建高效Java項(xiàng)目的強(qiáng)大組合】

    在當(dāng)今的軟件開發(fā)世界中,集成開發(fā)環(huán)境(IDE)、構(gòu)建工具和版本控制系統(tǒng)是每個(gè)項(xiàng)目不可或缺的組成部分。本文將深入探討這三個(gè)工具:IntelliJ IDEA、Maven和Git,以及它們?nèi)绾螀f(xié)同工作,幫助開發(fā)者構(gòu)建更高效、更可靠的項(xiàng)目。上一篇介紹了Git的分支管理策略,本文將介紹相

    2024年02月20日
    瀏覽(26)
  • 如何通過(guò)idea使用JDK8.0創(chuàng)建Spring項(xiàng)目

    如何通過(guò)idea使用JDK8.0創(chuàng)建Spring項(xiàng)目

    ? ? ? ? 目前 IDEA 進(jìn)行了優(yōu)化,所以我們?cè)趧?chuàng)建 Spring 項(xiàng)目時(shí)會(huì)發(fā)現(xiàn),以及不能選擇通過(guò) JDK8.0 創(chuàng)建了,這是因?yàn)楣俜揭呀?jīng)不再提供 JDK8.0 創(chuàng)建 Spring 項(xiàng)目,我們可以通過(guò)修改創(chuàng)建 Spring 項(xiàng)目的路徑來(lái)解決該問(wèn)題 ? ? ? ? 在創(chuàng)建 Spring 項(xiàng)目的頁(yè)面,修改 Server URL 為?https://start.a

    2024年01月22日
    瀏覽(41)
  • 關(guān)于使用maven構(gòu)建的項(xiàng)目IDEA提示:java: 錯(cuò)誤: 不支持發(fā)行版本 5

    關(guān)于使用maven構(gòu)建的項(xiàng)目IDEA提示:java: 錯(cuò)誤: 不支持發(fā)行版本 5

    出現(xiàn)這個(gè)問(wèn)題的主要原因是在maven中沒(méi)有配置你所需要的jdk版本。解決方案有兩種, 方案一:在IDEA中修改編譯的jdk版本,需要修改多處,比較復(fù)雜,這里不贅述了。 方案二:直接在Maven中配置需要的jdk版本,然后刷新一下Maven就能解決 以上代碼是java17,修改成你需要的jdk版本

    2024年02月07日
    瀏覽(32)
  • 通過(guò)IDEA將java程序或者項(xiàng)目打包為jar包(詳細(xì)步驟)

    通過(guò)IDEA將java程序或者項(xiàng)目打包為jar包(詳細(xì)步驟)

    通過(guò)IDEA將java程序或者項(xiàng)目打包為jar包 文章目錄 目錄 文章目錄 一、使用java語(yǔ)言,編寫一個(gè)字典(Dict)Demo 二、將Dict程序打包為jar包 代碼如下: 1.點(diǎn)擊file,點(diǎn)擊project structure. 2.點(diǎn)擊Artifacts,點(diǎn)擊“+”,點(diǎn)擊JAR,點(diǎn)擊from......dependencies. ?3.選擇項(xiàng)目位置Module,和程序類Main Class(要

    2024年02月11日
    瀏覽(16)
  • 通過(guò)exe4j將 java 項(xiàng)目(jar)打包成exe可執(zhí)行文件(詳細(xì)步驟)

    通過(guò)exe4j將 java 項(xiàng)目(jar)打包成exe可執(zhí)行文件(詳細(xì)步驟)

    通過(guò)exe4j將 java 項(xiàng)目(jar)打包成exe可執(zhí)行文件 文章目錄 文章目錄 一、下載安裝 二、使用步驟 下載鏈接: ej-technologies - Java APM, Java Profiler, Java Installer Builder ?安裝只需一直下一步即可。 1.輸入注冊(cè)碼“L-g782dn2d-1f1yqxx1rv1sqd”。 2.如下圖: 3.如下圖: 4.如下圖: 5.如下圖:

    2024年02月16日
    瀏覽(30)
  • 如何進(jìn)行Java項(xiàng)目的構(gòu)建和部署?

    Java項(xiàng)目的構(gòu)建和部署有多種方式,以下是一般常用的方法: 使用構(gòu)建工具:常見(jiàn)的Java構(gòu)建工具包括Apache Maven和Gradle。它們可以自動(dòng)處理依賴管理、編譯、測(cè)試和打包等任務(wù),并生成可部署的項(xiàng)目文件。你可以在項(xiàng)目根目錄下創(chuàng)建一個(gè)適當(dāng)?shù)臉?gòu)建文件(如pom.xml或build.gradle),

    2024年02月09日
    瀏覽(19)
  • IDEA如何打開Java項(xiàng)目(案例學(xué)習(xí))

    IDEA如何打開Java項(xiàng)目(案例學(xué)習(xí))

    【辰兮要努力】:hello你好我是辰兮,很高興你能來(lái)閱讀,昵稱是希望自己能不斷精進(jìn),向著優(yōu)秀程序員前行! 博客來(lái)源于項(xiàng)目以及編程中遇到的問(wèn)題總結(jié),偶爾會(huì)有讀書分享,我會(huì)陸續(xù)更新Java前端、后臺(tái)、數(shù)據(jù)庫(kù)、項(xiàng)目案例等相關(guān)知識(shí)點(diǎn)總結(jié),感謝你的閱讀和關(guān)注,希望我

    2024年02月04日
    瀏覽(20)
  • IDEA生成可執(zhí)行jar包

    IDEA生成可執(zhí)行jar包

    1. 進(jìn)入需要打包的項(xiàng)目,選擇? 最上方菜單欄的 File → Project Structure 2. 選擇? 左側(cè)菜單欄 Artifacts → +加號(hào) → JAR → from modules with dependencies 3. 選擇 入口類 Main Class (點(diǎn)擊文件夾圖標(biāo)可以快速選擇),點(diǎn)擊? OK,OK 4. 返回到IDEA主界面,選擇? 最上方菜單欄 Build → Build Artifact

    2024年02月19日
    瀏覽(15)
  • 使用IDEA構(gòu)建jar然后轉(zhuǎn)執(zhí)行程序exe的爬坑

    使用IDEA構(gòu)建jar然后轉(zhuǎn)執(zhí)行程序exe的爬坑

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

    2024年02月16日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包