IDEA中MAVEN项目打JAR包的简单方法


xinchuang
信创商业研究中心 2022-09-26 14:23:22 52788
分类专栏: 资讯

IDEA中MAVEN项目打JAR包的简单方法

  Idea中为一般的非Web项目打Jar包是有自己的方法的,网上一搜就能查到很多。

  但是如果是为Maven项目打Jar包,其实是很简单的,因为maven本身就有打Jar包的命令。

最简单的方法

  首先是直接创建maven项目,而不是java项目,其次在maven项目里的pom.xml中添加打包的插件,这里有很多种方式的。最最简单的就是只使用maven-compiler-plugin、maven-jar-plugin插件,并且指定程序入口<mainClass>。相关代码如下:

  pom.xml文件为:

  1. -meta"><?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>cn.mymaven</groupId>
  7. <artifactId>test</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <build>
  10. <plugins>
  11. <plugin>
  12. <groupId>org.apache.maven.plugins</groupId>
  13. <artifactId>maven-compiler-plugin</artifactId>
  14. <configuration>
  15. <source>1.8</source>
  16. <target>1.8</target>
  17. </configuration>
  18. </plugin>
  19. <plugin>
  20. <groupId>org.apache.maven.plugins</groupId>
  21. <artifactId>maven-jar-plugin</artifactId>
  22. <configuration>
  23. <archive>
  24. <manifest>
  25. <addClasspath>true</addClasspath>
  26. <useUniqueVersions>false</useUniqueVersions>
  27. <classpathPrefix>lib/</classpathPrefix>
  28. <mainClass>cn.mymaven.test.TestMain</mainClass>
  29. </manifest>
  30. </archive>
  31. </configuration>
  32. </plugin>
  33. </plugins>
  34. </build>
  35. </project>

入口类TestMain.java为:

  1. package cn.mymaven.test;
  2. public class TestMain {
  3. public static void main(String[] args){
  4. System.out.println("Hello World");
  5. }
  6. }

然后开始打包,在Idea中把Maven项目的命令都做成了可视化的操作界面,只需要如下操作就好:

  在Maven Project目录下,选中选中项目,右键,点击package  

 

  此时在target目录下,就会生成这个项目的Jar包

  使用java -jar 命令运行这个Jar包,会输出“Hello World”

需要注意的地方

   需要说明的是,如果一个maven项目中有多个子目录,每一个子目录中的pom.xml对应一个项目,它的作用范围只有这一个子目录下的。比如扫描配置文件,如果要让一个子目录下的pom.xml扫描另一个子目录下的配置文件,那是做不到的。在打jar包的时候,只运行当前的pom.xml文件。

  当然也有其他的打包方法,比如使用spring-boot-maven-plugin插件在打Jar包时,会引入依赖包

  它的pom.xml文件配置为:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. </plugin>
  7. <plugin>
  8. <groupId>org.apache.maven.plugins</groupId>
  9. <artifactId>maven-compiler-plugin</artifactId>
  10. <configuration>
  11. <source>1.8</source>
  12. <target>1.8</target>
  13. </configuration>
  14. </plugin>
  15. <plugin>
  16. <groupId>org.apache.maven.plugins</groupId>
  17. <artifactId>maven-jar-plugin</artifactId>
  18. <configuration>
  19. <archive>
  20. <manifest>
  21. <addClasspath>true</addClasspath>
  22. <useUniqueVersions>false</useUniqueVersions>
  23. <classpathPrefix>lib/</classpathPrefix>
  24. <mainClass>cn.mymaven.test.TestMain</mainClass>
  25. </manifest>
  26. <manifestEntries>
  27. <version>${project.version}</version>
  28. </manifestEntries>
  29. </archive>
  30. </configuration>
  31. </plugin>
  32. </plugins>
  33. </build>

也可以:

  1. <build>
  2. <finalName>vehicle-status-collection</finalName>
  3. <plugins>
  4. <plugin>
  5. <artifactId>maven-compiler-plugin</artifactId>
  6. <configuration>
  7. <source>1.6</source>
  8. <target>1.6</target>
  9. </configuration>
  10. </plugin>
  11. <plugin>
  12. <groupId>org.apache.maven.plugins</groupId>
  13. <artifactId>maven-shade-plugin</artifactId>
  14. <version>1.4</version>
  15. <configuration>
  16. <createDependencyReducedPom>false</createDependencyReducedPom>
  17. </configuration>
  18. <executions>
  19. <execution>
  20. <!-- 执行package的phase -->
  21. <phase>package</phase>
  22. <!-- 为这个phase绑定goal -->
  23. <goals>
  24. <goal>shade</goal>
  25. </goals>
  26. <configuration>
  27. <!-- 过滤掉以下文件,不打包 :解决包重复引用导致的打包错误-->
  28. <filters>
  29. <filter>
  30. <artifact>*:*</artifact>
  31. <excludes>
  32. <exclude>META-INF/*.SF</exclude>
  33. <exclude>META-INF/*.DSA</exclude>
  34. <exclude>META-INF/*.RSA</exclude>
  35. </excludes>
  36. </filter>
  37. </filters>
  38. <transformers>
  39. <transformer
  40. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  41. <resource>META-INF/spring.handlers</resource>
  42. </transformer>
  43. <!-- 打成可执行的jar包 的主方法入口-->
  44. <transformer
  45. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  46. <mainClass>com.timanetworks.operate.vehicle.online.monitor.Main</mainClass>
  47. </transformer>
  48. <transformer
  49. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  50. <resource>META-INF/spring.schemas</resource>
  51. </transformer>
  52. </transformers>
  53. </configuration>
  54. </execution>
  55. </executions>
  56. </plugin>
  57. </plugins>
  58. <defaultGoal>compile</defaultGoal>
  59. </build>
文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树Java概览Maven基础64477 人正在系统学习中

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=10364
赞同 0
评论 0 条
信创商业研究中心L2
粉丝 11 发表 95 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2959
【软件正版化】软件正版化工作要点  2878
统信UOS试玩黑神话:悟空  2843
信刻光盘安全隔离与信息交换系统  2737
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1270
grub引导程序无法找到指定设备和分区  1235
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
点击报名 | 京东2025校招进校行程预告  164
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!