当前位置:   article > 正文

使用IDEA创建一个JAR文件_idea生成jar包

idea生成jar包

一、普通的Java项目打包

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

 TestMain.java:

  1. import javax.swing.*;
  2. import java.awt.*;
  3. /**
  4. * @Author : xj
  5. * @Date : 2022/5/30 8:54
  6. * @Description :普通Java项目——Jar包测试
  7. */
  8. public class TestMain {
  9. //定义一个CreateJFrame方法
  10. public void CreateJFrame(String title){
  11. //创建一个JFrame对象
  12. JFrame jFrame = new JFrame(title);
  13. //获取一个容器
  14. Container container = jFrame.getContentPane();
  15. //创建一个JLabel标签
  16. JLabel jl = new JLabel("这是一个JFrame窗体");
  17. //使标签上的文字居中
  18. jl.setHorizontalAlignment(SwingConstants.CENTER);
  19. //将标签添加到容器中
  20. container.add(jl);
  21. //设置容器的背景颜色
  22. container.setBackground(Color.gray);
  23. //设置JFrame可见
  24. jFrame.setVisible(true);
  25. //设置JFrame大小
  26. jFrame.setSize(500,500);
  27. //设置JFrame的显示位置
  28. jFrame.setLocation(600,300);
  29. //设置窗口关闭方式
  30. jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  31. }
  32. public static void main(String[] args) {
  33. new TestMain().CreateJFrame("普通Java项目——Jar包测试");
  34. System.out.println("普通Java项目——Jar包大功告成!");
  35. }
  36. }

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文件内容:

  1. Manifest-Version: 1.0
  2. Created-By: Apache Ant 1.5.1
  3. Extension-Name: Struts Framework
  4. Specification-Title: Struts Framework
  5. Specification-Vendor: Apache Software Foundation
  6. Specification-Version: 1.1
  7. Implementation-Title: Struts Framework
  8. Implementation-Vendor: Apache Software Foundation
  9. Implementation-Vendor-Id: org.apache
  10. Implementation-Version: 1.1
  11. 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:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.xj</groupId>
  7. <artifactId>MavenProJarTest</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成-->
  10. <build>
  11. <plugins>
  12. <plugin>
  13. <groupId>org.apache.maven.plugins</groupId>
  14. <!--编译源文件和测试源文件-->
  15. <artifactId>maven-compiler-plugin</artifactId>
  16. <!--该插件所需要的特殊配置-->
  17. <configuration>
  18. <!--源代码使用的JDK版本-->
  19. <source>1.8</source>
  20. <!--需要生成的目标class文件的编译版本-->
  21. <target>1.8</target>
  22. </configuration>
  23. </plugin>
  24. <plugin>
  25. <groupId>org.apache.maven.plugins</groupId>
  26. <!--创建Jar文件-->
  27. <artifactId>maven-jar-plugin</artifactId>
  28. <configuration>
  29. <archive>
  30. <!-- 生成MANIFEST.MF的设置 -->
  31. <manifest>
  32. <!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
  33. <addClasspath>true</addClasspath>
  34. <!--这个属性特别关键,如果没有这个属性,有时候我们引用的包maven库
  35. 下面可能会有多个包,并且只有一个是正确的,其余的可能是带时间戳的,
  36. 此时会在classpath下面把那个带时间戳的给添加上去,
  37. 然后我们 在依赖打包的时候,打的是正确的,所以两头会对不上,报错。 -->
  38. <useUniqueVersions>false</useUniqueVersions>
  39. <!-- 这个jar所依赖的jar包添加classPath的时候的前缀,如果这个jar本身和依赖包在同一级目录,则不需要添加 -->
  40. <classpathPrefix>lib/</classpathPrefix>
  41. <!-- jar启动入口类 -->
  42. <mainClass>TestMain</mainClass>
  43. </manifest>
  44. </archive>
  45. </configuration>
  46. </plugin>
  47. </plugins>
  48. </build>
  49. </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:

  1. package com.xj.main;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. /**
  5. * @Author : xjfu
  6. * @Date : 2022/6/20 9:04
  7. * @Description :Spring Boot 启动类
  8. */
  9. @SpringBootApplication
  10. public class SpringBootMain {
  11. public static void main(String[] args) {
  12. SpringApplication.run(SpringBootMain.class, args);
  13. }
  14. }

HelloController.java:

  1. package com.xj.main.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.ResponseBody;
  5. /**
  6. * @Author : xjfu
  7. * @Date : 2022/6/20 9:07
  8. * @Description : Controller类
  9. */
  10. @Controller
  11. public class HelloController {
  12. @ResponseBody
  13. @RequestMapping(value = "/hello")
  14. public String sayHello(){
  15. return "Hello ! Spring Boot Project Jar Test!";
  16. }
  17. }

pom.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.xj</groupId>
  7. <artifactId>spring_boot_jar_test</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <!--Spring Boot所需Jar包-->
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>2.4.5</version>
  14. <relativePath/>
  15. </parent>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-web</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-test</artifactId>
  24. <scope>test</scope>
  25. </dependency>
  26. </dependencies>
  27. </project>

2.运行程序

 3.配置打包信息

pom.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.xj</groupId>
  7. <artifactId>spring_boot_jar_test</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <!--Spring Boot所需Jar包-->
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>2.4.5</version>
  14. <relativePath/>
  15. </parent>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-web</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-test</artifactId>
  24. <scope>test</scope>
  25. </dependency>
  26. </dependencies>
  27. <!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成-->
  28. <build>
  29. <plugins>
  30. <!--使用SpringBoot的打包插件-->
  31. <plugin>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-maven-plugin</artifactId>
  34. <executions>
  35. <execution>
  36. <goals>
  37. <goal>repackage</goal>
  38. </goals>
  39. </execution>
  40. </executions>
  41. </plugin>
  42. </plugins>
  43. </build>
  44. </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包的简单方法 - 贾树丙 - 博客园

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/798586
推荐阅读
相关标签
  

闽ICP备14008679号