Maven中利用assembly插件打包jar包

作者:KingWang_WHU 时间:2022-07-09 04:32:14 

在maven中有几种方法打包项目,在之前的一篇博客中【Java】打包Jar包并用脚本执行,已经介绍了怎么在没有maven插件的情况下,怎么打包项目,并执行的。

而本篇则是在上一篇文章【Maven】Maven系列(一)——环境安装配置和新建maven项目之后,总结一下怎么使用maven插件进行打包项目。
maven中有多种插件提供了打包功能,分别是maven-jar-plugin(用来打包成jar包),maven-war-plugin(打包成war包)、maven-assembly-plugin。
这里只介绍怎么使用assembly插件打包项目成jar包。

主要有以下几个步骤(前提是IDE中已经有maven插件了)

1,配置pom.xml文件

2,执行maven命令中的assembly:assembly命令进行打包

3,将对应的资源文件复制出来放到同生成的jar包文件同目录下,以便运行jar包时候可以找到相应的资源。

4,利用java -jar命令运行jar包

1,在项目的pom.xml文件中添加一个标签

<plugin></plugin>
<plugin>  
   <artifactId>maven-assembly-plugin</artifactId>  
   <configuration>  
   <archive>  
       <manifest>  
           <mainClass>com.hey.main.Main</mainClass>  
       </manifest>  
   </archive>  
   <descriptorRefs>  
       <descriptorRef>jar-with-dependencies</descriptorRef>  
   </descriptorRefs>  
   </configuration>  
</plugin>

如下是一个完整的pom.xml文档:

<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>ShareBike</groupId>
   <artifactId>ShareBike</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
   <build>
       <sourceDirectory>src</sourceDirectory>
       <resources>
           <resource>
               <directory>src</directory>
               <excludes>
                   <exclude>**/*.java</exclude>
               </excludes>
           </resource>
       </resources>
       <plugins>
           <plugin>
               <artifactId>maven-assembly-plugin</artifactId>
               <configuration>
                   <archive>
                       <manifest>
                           <mainClass>main.PushTrailVerticle</mainClass>
                       </manifest>
                   </archive>
                   <descriptorRefs>
                       <descriptorRef>jar-with-dependencies</descriptorRef>
                   </descriptorRefs>
               </configuration>
           </plugin>
           <plugin>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.5.1</version>
               <configuration>
                   <source>1.8</source>
                   <target>1.8</target>
               </configuration>
           </plugin>
       </plugins>
   </build>
   <dependencies>
       <dependency>
           <groupId>io.vertx</groupId>
           <artifactId>vertx-core</artifactId>
           <version>3.4.2</version>
       </dependency>
       <dependency>
           <groupId>io.vertx</groupId>
           <artifactId>vertx-web</artifactId>
           <version>3.4.2</version>
       </dependency>
       <dependency>
           <groupId>c3p0</groupId>
           <artifactId>c3p0</artifactId>
           <version>0.9.1.2</version>
       </dependency>
       <dependency>
           <groupId>ojdbc</groupId>
           <artifactId>ojdbc</artifactId>
           <version>oracle12c</version>
       </dependency>
       <dependency>
           <groupId>io.vertx</groupId>
           <artifactId>vertx-web-client</artifactId>
           <version>3.4.2</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/com.vividsolutions/jts -->
       <dependency>
           <groupId>com.vividsolutions</groupId>
           <artifactId>jts</artifactId>
           <version>1.14</version>
       </dependency>
       <dependency>
           <groupId>com.google.protobuf</groupId>
           <artifactId>protobuf-java</artifactId>
           <version>3.3.0</version>
       </dependency>

</dependencies>
</project>

上面的mainClass标签中的内容替换成自己的main函数所在的类,前面要包含package名字,也就是package_name.MainClassName。

2,执行打包命令

2.1 右击选中项目的properties&ndash;>run as&ndash;>maven build&hellip;.

Maven中利用assembly插件打包jar包

2.2执行assembly:assembly命令

在Main窗口下的Goals里填写assembly:assembly,然后点击run就可以了。

Maven中利用assembly插件打包jar包

2.3 run之后就会在项目的target目录下生成一个

项目名-版本号-with-dependencies的一个jar包,这个是个fat jar包,里面包含了项目里用到的依赖项。

当然也会生成另外一个没有包含依赖项的jar包。

3 部署项目

因为项目中还用到了很多资源文件,一些txt,properties文件等等,因此在部署的时候,还需要将这些文件存放在和jar包同路径下(否则就会出现运行时资源找不到的异常)。这一点和【Java】打包Jar包并用脚本执行里一样,可以参照这一篇文章。

当然也可以编辑pom.xml文件中的内容,打包时把资源文件一起打包进去,但是我们一些配置文件一般都是可能需要自己可以手动编辑的,如果打包到jar包中,就无法编辑了。

4 运行jar包

编写一个bat命令文件,里面的内容就是java -jar jar_name。

该命令文件也放在和jar同目录下,点击即可运行程序。

来源:https://blog.csdn.net/wk1134314305/article/details/76407617

标签:Maven,assembly,插件,打包,jar包
0
投稿

猜你喜欢

  • java高并发InterruptedException异常引发思考

    2022-09-09 20:15:34
  • springboot 启动如何排除某些bean的注入

    2022-01-20 18:36:01
  • 详解Java中用于查找对象哈希码值的hashCode()函数

    2023-09-17 02:52:19
  • Java集合框架之List ArrayList LinkedList使用详解刨析

    2022-04-24 13:43:43
  • SpringCloud Eureka实现服务注册与发现

    2021-10-25 11:41:58
  • Kotlin使用TransitionDrawable实现颜色渐变效果流程讲解

    2023-03-28 06:54:08
  • c语言定时器示例分享

    2023-11-04 09:44:52
  • Android广播接实现监听电话状态(电话的状态,拦截)

    2022-12-21 18:50:49
  • C++实现堆排序实例介绍

    2022-06-05 12:33:54
  • 剑指Offer之Java算法习题精讲链表与二叉树专项训练

    2022-01-12 19:19:01
  • Java多线程的用法详解

    2021-10-29 19:20:59
  • VS2019配置OpenCV4.1.0详细教程与测试代码(推荐)

    2021-11-06 21:55:24
  • Android中Service实时向Activity传递数据实例分析

    2022-07-22 20:44:15
  • C#调用WebService的方法介绍

    2022-06-05 01:10:30
  • SpringBoot深入浅出分析初始化器

    2022-07-06 09:05:59
  • SpringBoot2.1.4中的错误处理机制

    2023-11-06 02:48:47
  • Mybatis返回插入的主键问题解决方案

    2023-05-06 02:58:03
  • Java中clone方法使用笔记

    2023-03-26 07:44:38
  • HttpServletRequest对象常用功能_动力节点Java学院整理

    2022-01-05 10:37:08
  • TOMCAT内存溢出及大小调整的实现方法

    2023-02-24 06:55:33
  • asp之家 软件编程 m.aspxhome.com