使用IDEA创建一个JAR文件

一、普通的Java项目打包

1.使用IDEA创建一个Java项目

 TestMain.java:

import javax.swing.*;
import java.awt.*;

/**
 * @Author : xj
 * @Date : 2022/5/30 8:54
 * @Description :普通Java项目——Jar包测试
 */
public class TestMain {
    //定义一个CreateJFrame方法
    public void CreateJFrame(String title){
        //创建一个JFrame对象
        JFrame jFrame = new JFrame(title);
        //获取一个容器
        Container container = jFrame.getContentPane();
        //创建一个JLabel标签
        JLabel jl = new JLabel("这是一个JFrame窗体");
        //使标签上的文字居中
        jl.setHorizontalAlignment(SwingConstants.CENTER);
        //将标签添加到容器中
        container.add(jl);
        //设置容器的背景颜色
        container.setBackground(Color.gray);
        //设置JFrame可见
        jFrame.setVisible(true);
        //设置JFrame大小
        jFrame.setSize(500,500);
        //设置JFrame的显示位置
        jFrame.setLocation(600,300);
        //设置窗口关闭方式
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new TestMain().CreateJFrame("普通Java项目——Jar包测试");
        System.out.println("普通Java项目——Jar包大功告成!");
    }
}

2.使用IDEA将Java项目打成JAR文件

如果对文件做了修改,要重新打包,只需要rebuild即可:

   

3.运行Jar文件

(1)方法一:双击Jar文件直接运行

 (2)方法二:在DOS中使用Java指令运行

4.MANIFEST.MF文件说明

        打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内 容,先来看struts.jar中包含的MANIFEST.MF文件内容:

Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Extension-Name: Struts Framework
Specification-Title: Struts Framework
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.1
Implementation-Title: Struts Framework
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.1
Class-Path:  commons-beanutils.jar commons-collections.jar commons-digester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar struts-legacy.jar

注意:MANIFEST 文件末尾必须要有一个空行,而且每行的冒号后面必须要有一个空格。

如果我们把MANIFEST中的配置信息进行分类,可以归纳出下面几个大类:

(1)一般属性

1> Manifest-Version
 用来定义manifest文件的版本,例如:Manifest-Version: 1.0
2> Created-By
 声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:

Created-By: Apache Ant 1.5.1
3> Signature-Version
 定义jar文件的签名版本
4> Class-Path
 应用程序或者类装载器使用该值来构建内部的类搜索路径

(2)应用程序相关属性

1> Main-Class
        定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。

二、Maven项目打包

1.使用IDEA创建一个Maven项目

创建Maven项目参考我的另一篇文章:

IDEA创建一个maven项目_人……杰的博客-CSDN博客_idea新建一个maven项目

创建的结果如下:

 2.使用IDEA将Maven项目打成JAR文件

(1).在pom.xml中添加Maven对应的打Jar包插件信息

pom.xml:

<?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>com.xj</groupId>
    <artifactId>MavenProJarTest</artifactId>
    <version>1.0-SNAPSHOT</version>


    <!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <!--编译源文件和测试源文件-->
                <artifactId>maven-compiler-plugin</artifactId>
                <!--该插件所需要的特殊配置-->
                <configuration>
                    <!--源代码使用的JDK版本-->
                    <source>1.8</source>
                    <!--需要生成的目标class文件的编译版本-->
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <!--创建Jar文件-->
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <!-- 生成MANIFEST.MF的设置 -->
                        <manifest>
                            <!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
                            <addClasspath>true</addClasspath>
                            <!--这个属性特别关键,如果没有这个属性,有时候我们引用的包maven库
				            下面可能会有多个包,并且只有一个是正确的,其余的可能是带时间戳的,
				            此时会在classpath下面把那个带时间戳的给添加上去,
				            然后我们 在依赖打包的时候,打的是正确的,所以两头会对不上,报错。 -->
                            <useUniqueVersions>false</useUniqueVersions>
                            <!-- 这个jar所依赖的jar包添加classPath的时候的前缀,如果这个jar本身和依赖包在同一级目录,则不需要添加 -->
                            <classpathPrefix>lib/</classpathPrefix>
                            <!-- jar启动入口类 -->
                            <mainClass>TestMain</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

其中<build>......</build>之间的信息就是打Jar的配置信息。

 

maven打包插件需要说明的地方:

        需要说明的是,如果一个maven项目中有多个子目录,每一个子目录中的pom.xml对应一个项目,它的作用范围只有这一个子目录下的。比如扫描配置文件,如果要让一个子目录下的pom.xml扫描另一个子目录下的配置文件,那是做不到的。在打jar包的时候,只运行当前的pom.xml文件。当然也有其他的打包方法,比如使用spring-boot-maven-plugin插件在打Jar包时,会引入依赖包

(2).使用IDEA打成Jar文件

 

 3.运行Jar文件

(1)方法一:双击Jar文件直接运行

(2)方法二:在DOS中使用Java指令运行

三、Spring Boot项目打包

 1.使用IDEA创建一个Spring Boot项目

创建Spring Boot项目参考我的另一篇文章:

Spring Boot之创建一个Spring Boot项目(一)_人……杰的博客-CSDN博客

创建的结果如下:

SpringBootMain.java:

package com.xj.main;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Author : xjfu
 * @Date : 2022/6/20 9:04
 * @Description :Spring Boot 启动类
 */
@SpringBootApplication
public class SpringBootMain {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMain.class, args);
    }
}

HelloController.java:

package com.xj.main.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Author : xjfu
 * @Date : 2022/6/20 9:07
 * @Description : Controller类
 */
@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping(value = "/hello")
    public String sayHello(){
        return "Hello ! Spring Boot Project Jar Test!";
    }
}

pom.xml:

<?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>com.xj</groupId>
    <artifactId>spring_boot_jar_test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--Spring Boot所需Jar包-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

2.运行程序

 3.配置打包信息

pom.xml:

<?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>com.xj</groupId>
    <artifactId>spring_boot_jar_test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--Spring Boot所需Jar包-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成-->
    <build>
        <plugins>
            <!--使用SpringBoot的打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

4.打包并运行程序

运行方法1——双击打包文件运行程序:

 

 注意启动后要关闭,不然就会一直占用着“8080”端口:

运行方法2——java -jar 命令运行:

四、参考

1.jar包的几种制作方式_一个努力的菜鸟的博客-CSDN博客_怎么制作jar包

2.Java 制作 jar 包的基本流程_GGN_2015的博客-CSDN博客_如何开发jar包

3.MANIFEST.MF文件详解 - DavidGandy - 博客园

4.java打jar包的几种方式详解 - jack_Meng - 博客园

5.Maven build之pom.xml文件中的Build配置_u010010606的博客-CSDN博客_<build>

6.maven-jar-plugin的使用及详解_懒鸟一枚的博客-CSDN博客_maven-jar-plugin

7.IDEA中MAVEN项目打JAR包的简单方法 - 贾树丙 - 博客园

首先,在IDEA创建一个非maven的ssm工程,你可以按照以下步骤进行操作: 1. 打开IDEA,点击"Create New Project"创建新项目。 2. 在左侧的菜单中选择"Java",然后点击"Next"。 3. 输入项目名称,例如"SSMProject01",然后点击"Next"。 4. 在"Project SDK"下拉菜单中选择你的Java版本,然后点击"Next"。 5. 在项目类型选择"None",然后点击"Next"。 6. 点击"Finish"完成项目的创建。 接下来,我们需要对项目进行一些配置: 1. 在项目结构中,可以看到项目的目录结构与Eclipse创建的项目有所不同。我们需要做一些调整。 2. 在项目根目录下创建"WEB-INF"文件夹,然后在"WEB-INF"下创建"lib"和"classes"两个文件夹。"lib"文件夹用于存放项目所需的jar,"classes"文件夹用于存放编译后的文件。 3. 将ssm框架所需的jar放入"lib"文件夹中。 然后,我们需要告诉IDEA关于lib和classes文件夹的位置: 1. 点击菜单栏中的"File",选择"Project Structure"。 2. 在弹出的窗口中,选择"Modules",然后选择你的项目。 3. 在右侧的选项卡中,选择"Dependencies"。 4. 点击右上角的"+"按钮,选择"JARs or directories"。 5. 在弹出的窗口中,选择你之前创建的"lib"文件夹,然后点击"OK"。 6. 再次点击右上角的"+"按钮,选择"JARs or directories"。 7. 在弹出的窗口中,选择你之前创建的"classes"文件夹,然后点击"OK"。 8. 点击"Apply"和"OK"保存配置。 最后,你可以编辑index.jsp文件来查看项目是否正常运行: 1. 打开index.jsp文件,你可以在"webapp"文件夹下找到它。 2. 编辑index.jsp文件,你可以根据需要修改文件中的内容。 以上就是使用IDEA创建一个ssm框架的步骤。如果你按照以上步骤进行操作,你应该能够成功创建一个ssm工程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值