Maven中利用assembly插件打包jar包

 更新时间:2021年12月31日 15:39:45   作者:KingWang_WHU  
本文详细讲解了Maven中利用assembly插件打包jar包的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

在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–>run as–>maven build….

2.2执行assembly:assembly命令

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

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同目录下,点击即可运行程序。

到此这篇关于Maven中利用assembly插件打包jar包的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java案例之HashMap集合存储学生对象并遍历

    Java案例之HashMap集合存储学生对象并遍历

    这篇文章主要介绍了Java案例之HashMap集合存储学生对象并遍历,创建一个HashMap集合,键是学号(String),值是学生对象(Student),存储三个键值对元素并遍历,下文具体操作需要的朋友可以参考一下
    2022-04-04
  • StateMachine 状态机机制深入解析

    StateMachine 状态机机制深入解析

    这篇文章主要介绍了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • springboot自定义redis-starter的实现

    springboot自定义redis-starter的实现

    这篇文章主要介绍了springboot自定义redis-starter的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Java使用modbus-master-tcp实现modbus tcp通讯

    Java使用modbus-master-tcp实现modbus tcp通讯

    这篇文章主要为大家详细介绍了另外一种Java语言的modbux tcp通讯方案,那就是modbus-master-tcp,文中的示例代码讲解详细,需要的可以了解下
    2023-12-12
  • Java多态性定义与用法实例详解

    Java多态性定义与用法实例详解

    这篇文章主要介绍了Java多态性定义与用法,较为详细的分析了多态的概念、功能以及java定义与实现面向对象多态性的相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • IDEA 自动生成 JPA 实体类的图文教程

    IDEA 自动生成 JPA 实体类的图文教程

    这篇文章主要介绍了IDEA 自动生成 JPA 实体类的图文教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 使用Mybatis-Plus实现对象属性自动填充功能

    使用Mybatis-Plus实现对象属性自动填充功能

    这篇文章主要介绍了如何使用Mybatis-Plus实现对象属性自动填充功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,感兴趣的朋友们下面随着小编来一起来学习吧
    2024-01-01
  • Java实现NIO聊天室的示例代码(群聊+私聊)

    Java实现NIO聊天室的示例代码(群聊+私聊)

    这篇文章主要介绍了Java实现NIO聊天室的示例代码(群聊+私聊),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Java使用5个线程计算数组之和

    Java使用5个线程计算数组之和

    本文主要介绍了Java使用5个线程计算数组之和,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • DoytoQuery中的关联查询方案示例详解

    DoytoQuery中的关联查询方案示例详解

    这篇文章主要为大家介绍了DoytoQuery中的关联查询方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论