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包的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Maven 生成打包可执行jar包的方法步骤

    最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下 1. 需求 项目打包,满足以下要求: 1.整个项目打一个Zip包下面包括应用程序.应用程序依赖的jar包.说明文档 2.项目打的jar包可以执行不同类里的Main函数 3.项目源码打的jar包要与依赖的第三方jar包分开 4.项目里的执行脚本也要一块打包并进行分类 5.document目录下的readme.txt放在压缩包的根目录下,其他的还放在这个目录下 6.打的jar包去掉不需要的目录(文

  • maven springboot如何将jar包打包到指定目录

    目录 如何将jar包打包到指定目录 1.目的 2.修改pom 3.修改启动脚本 jar包外指定配置文件及原理 解决方案 运行 原理 如何将jar包打包到指定目录 今天分享一下springboot将jar包打包到指定目录下. 由于之前上线都是一个打包到一个jar,由于服务多了,1个包100多M,哪怕是小版本上线都需要重新上传jar包. 1.目的 将不常用的比如spring,druid等不常用打包到lib目录,这样每次上线不需要上传这些.第三方或者常改动的还打包到本身的jar包内,每次上线都会新打包

  • Maven引入本地Jar包并打包进War包中的方法

    1.概述 在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来. 2. 拷贝至项目根目录 项目根目录即pom.xml文件所在的同级目录,可以在项目根目录下创建文件夹lib,如下图所示: 这4个Jar包是识别网页编码所需的包. 3. 配置pom.xml,依赖本地Jar 配置Jar的dependency,包括groupId,artifactId,version三个属性,同时还要包含scope和systemPath属性,分别指定Jar包来源于

  • Maven打包jar包没有主属性问题解决方案

    Spring boot项目结合docker容器用,打了个jar包,启动的时候竟然说:no main manifest attribute, in target/*.jar 但也不是所有的微服务的jar包都不能启动,比对一下这两个包对应的打包插件 可以用的长这样: <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artif

  • Maven pom.xml 添加本地jar包依赖以及打包方法

    Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法: 1. 安装到本地仓库 第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候.只需要将jar包安装到本地maven仓库下,然后添加依赖即可. (1)安装到本地仓库,执行以下命令(其中的-Dfile/-DgroupId/-DartifactId/-Dversion项根据pom文件内容填写): mvn install:install-file -Dfile=xxxxx.jar -Dg

  • maven打包成第三方jar包且把pom依赖包打入进来的方法

    添加此PLUGIN到项目的POM.XML中 <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.allen.capturewebdata.Main</mainClass> </mani

  • Maven中利用assembly插件打包jar包

    在maven中有几种方法打包项目,在之前的一篇博客中[Java]打包Jar包并用脚本执行,已经介绍了怎么在没有maven插件的情况下,怎么打包项目,并执行的. 而本篇则是在上一篇文章[Maven]Maven系列(一)——环境安装配置和新建maven项目之后,总结一下怎么使用maven插件进行打包项目.maven中有多种插件提供了打包功能,分别是maven-jar-plugin(用来打包成jar包),maven-war-plugin(打包成war包).maven-assembly-plugin.这

  • java 中使用maven shade plugin 打可执行Jar包

    java 中使用maven shade plugin 打可执行Jar包 eclipse里有一个功能叫做"打可执行(runnable) jar包", 用这个功能可以把一个工程自身和所有依赖包打成一个fat jar,并且指定Main方法,这样直接使用java jar xxx.jar就可以运行代码了. 但是在不使用eclipse的时候呢?其实,借助maven,我们很容易实现同样功能.maven提供了一个shade plugin,可以用来打fat jar, 同时也提供了指定main方法的功能.

  • IDEA中如何正确快速打jar包的方式

    1.打开idea 如图所示:点击箭头所指的位置: 2.选择你自己要打包的available element 后 如图所示 逐步点击即可 进入如下页面 点击ok 打包完成 来到主页面 对新打的jar包 build 选择刚打的新包build 此时jar包完成 在如下界面查看 ps:idea打jar包方式, 方式一 使用idea自带的打包方式 点击File ->project structure 选择Artifacts 然后点击绿色加号 按图一次选择 点击 完成后会弹出此界面  此时需要注意 信息的填

  • maven项目如何依赖自定jar包

    这篇文章主要介绍了maven项目如何依赖自定jar包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在开发中经常会出现maven项目需要依赖一个自定义jar包,但是这个jar包并没有在maven仓库中,就会出现打包时找不到jar包的问题,解决办法如下: 在这个模块中,lib下的jar包是我自己定义的,maven仓库中并没有,在pom文件中添加jar包时,做以下处理 这样打包时就能找到包的位置了 以上就是本文的全部内容,希望对大家的学习有所帮助,

  • Spring打包jar包时jsp页面无法访问问题解决

    spring打包jar包时jsp页面无法访问 问题如下 当前pom.xml配置 <build> <resources> <!--引入配置文件--> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> </resource> <!--引入静态文件--> <resource&

  • Java打包Jar包后使用脚本执行

    打包jar包的应用场景: 有时候,我们需要将一个java工程,放在服务器上让它执行.我们知道在IDE中,都是人为操作,执行这个程序.但是如果没有IDE环境,那么怎么执行Java工程呢? 这里,介绍一种jar包打包,并利用cmd执行的方式运行. 本文的IDE开发环境为Eclipse,所以idea环境开发的同学可能不太一样. 工程建好之后,结构图如下: 1,创建并编辑MANIFEST.MF文件 如果没有MANIFEST.MF文件,就需要先创建该文件.该文件的主要作用就是指定依赖项的路径以及程序执行的

  • 教你怎么用Idea打包jar包

    一.创建项目 创建一个简单的Java项目,其中Main.java为主函数,包含main方法: 二.完成JAR配置 进入File->Project Structure->Project Settings->Artifacts,选中Artifacts后,点击右侧"+",选择JAR->From modules with dependencies 会弹出弹窗"Create JAR from Modules": 在Main Class输入框输入Main

  • Linux中自定义shell脚本启动jar包的方法

    一键启动.停止.重启 java项目 创建.sh文件 vi XXX.sh 编写shell脚本 #!/bin/sh port=8080 #定义变量等号左右不能有空格 jar_name=/opt/oaclou/XXX.jar #运行脚本提示信息 tips(){ echo "-------------------------------------" echo "" echo "项目端口: ${port}" echo "项目地址: ${jar_

  • 使用springboot 打包插件去除jar包瘦身

    1.pom文件配置 1.1 添加maven-dependency-plugin插件用于将引用的jar包拷贝到指定的路径 便于后续tomcat启动指定依赖包路径 <!--拷贝依赖到jar外面的lib目录--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <execution

  • Mac中配置gradle环境及使用android studio打包jar包与arr包的方法

    前言 在Mac中用android studio 导出jar包最重要的是需要配置gradle ,它包的导出也是通过gradle命令进行的. 所以,如果想成功打包,要先配置好gradle环境,这样你才可以在android studio中的terminal中直接使用gradle命令了.下面话不多说了,来一起看看详细的介绍吧. gradle 环境变量的配置 1.这个配置和jdk的环境变量配置类似 启动终端,进入当前用户目录. 2.创建 .bash_profile 文件,如果已经有了就直接打开 3.用命令

随机推荐