如何使用MAVEN打JAR包(直接使用)

目录
  • 使用MAVEN打JAR包
    • 一、简单的方法:
    • 二、执行任意main方法
    • 续:
  • 扩展:maven 使用assembly 进行打包
    • 1. pom 中添加assembly 插件
    • 2. 创建assembly文件夹和assembly.xml文件

使用MAVEN打JAR包

一、简单的方法:

首先在pom.xml里面添加:

<build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>com.qunar.piao.data.integration.Boot</mainClass>
            </manifest>
            <!-- 需要执行的main -->
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

然后执行:mvn assembly:assembly

最后执行:java   -jar target/ticket-data-integration-0.0.1-SNAPSHOT-jar-with-dependencies.jar

二、执行任意main方法

两个类,Boot类:

package com.qunar.check.integration;

public class Boot {

    public static void main(String[] args){
        System.out.println("test xingxing");
    }
}

Boot2类:

package com.qunar.check.integration;

public class Boot2 {
    public static void main(String[] args){
        System.out.println("test liqiu");
    }
}

那么执行:

$ java -classpath target/check-jar-with-dependencies.jar com.qunar.check.integration.Boot2
test liqiu
$ java -classpath target/check-jar-with-dependencies.jar com.qunar.check.integration.Boot
test xingxing

两个main函数都可以执行

续:

如果你的项目包含Spring,那么打包可能就会遇到的麻烦,可以参考:

https://www.jb51.net/article/276778.htm

扩展:maven 使用assembly 进行打包

1. pom 中添加assembly 插件

要使用assembly 进项编译打包, 首先主要在pom 中的build中添加插件信息, 具体如图下所示:

<build>
    <finalName>${project.artifactId}</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
        <resource>
            <directory>${profile.dir}</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

    <plugins>
        <!-- compiler插件参数设置,指定编码 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>utf-8</encoding>
            </configuration>
        </plugin>

        <!--   这个插件是关键   -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <!--   这个是assembly 所在位置  -->
                <descriptor>src/main/assembly/assembly.xml</descriptor>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. 创建assembly文件夹和assembly.xml文件

创建assembly文件夹和assembly.xml文件, 这个样子创建主要是规范。
在pom 中已经介绍assembly.xml 位置。

<!--   这个是assembly 所在位置  -->
<descriptor>src/main/assembly/assembly.xml</descriptor>

创建assembly.xml 文件后添加如下内容:

<assembly>
    <formats>
        <!--支持 zip,tar,tar.gz,tar.bz2,jar,dir,war 等 -->
        <format>tar.gz</format>
        <format>zip</format>
        <format>dir</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>conf</outputDirectory>
            <fileMode>0644</fileMode>
        </fileSet>
        <fileSet>
            <directory>${profile.dir}</directory>
            <outputDirectory>conf</outputDirectory>
            <!-- 表示的是包含下面格式的资源文件 -->
            <includes>
                <include>*.xml</include>
                <include>*.properties</include>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
            <fileMode>0644</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/assembly/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
        </dependencySet>
    </dependencySets>
</assembly>

fileMode 官方解释:

Similar to a UNIX permission, sets the file mode of the files included. THIS IS AN OCTAL VALUE. Format: (User)(Group)(Other) where each component is a sum of Read = 4, Write = 2, and Execute = 1. For example, the value 0644 translates to User read-write, Group and Other

上述的三个fileSet 分别是将resource 下的资源打包到config 目录下, 将assembly下的bin 启动相关脚本打包到bin 目录下, 将maven项目依赖的所有jar 包, 打包到lib 中。
具体结构如下图所示:

参考地址:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

到此这篇关于如何使用MAVEN打JAR包(直接使用)的文章就介绍到这了,更多相关maven打jar包内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决Maven本地仓库明明有对应的jar包但还是报找不到的问题

    目录 Maven本地仓库有对应的jar包但是报找不到 问题原因 解决方法 Maven本地仓库有对应的jar包,但进行编译时,还提示jar找不到的原因 Maven本地仓库有对应的jar包但是报找不到 问题原因 第一,你本地仓库对应的包文件夹下有_remote.repositories这个文件: 第二,你的项目现在连接不到下载这个包的仓库: 以上两点就是本地明明有对应的jar包,但项目中还是会报找不到这个jar包的原因. 解决方法 1.直接干掉_remote.repositories这个文件: 2.

  • maven 使用assembly 进行打包的方法

    1. pom 中添加assembly 插件 要使用assembly 进项编译打包, 首先主要在pom 中的build中添加插件信息, 具体如图下所示: <build> <finalName>${project.artifactId}</finalName> <sourceDirectory>src/main/java</sourceDirectory> <resources> <resource> <director

  • Maven3种打包方式中maven-assembly-plugin的使用详解

    maven-jar-plugin,默认的打包插件,用来打普通的project JAR包: maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包: maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等. 我们日常使用的以maven-assembly-plugin为最多,因为大数据项目中往往有很多shell脚本.SQL脚本..properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化. 要使用该插件

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

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

  • Maven 项目用Assembly打包可执行jar包的方法

    目录 1.添加maven插件 2.mvn clean(清理下项目) 3.maven update project(用eclipse工具) 4.命令后执行命令mvn assembly:assembly -Dmaven.test.skip 5.执行 java -jar DataCollector.jar 该方法只可打包非spring项目的可执行jar包 1.添加maven插件 <build> <finalName>DataCollector</finalName> <

  • 浅谈maven的jar包和war包区别 以及打包方法

    jar文件包括java普通类.资源文件和普通文件,在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件.在打包的时候会自动生成MATA-INF文件夹,用于存储maven的pom信息和MANIFEST.MF文件.例如: war文件包含全部的web应用程序,即所有的java类,配置信息和jsp.js等静态资源.但是需要注意war引用war的时候会将应用war的资源全部拷贝到当前war的相同文件下,重名的文件会被替换.例如: war包依赖: <d

  • maven下载jar包改用阿里云maven库的方法

    本文介绍了maven下载jar包改用阿里云maven库的方法,分享给大家,具体如下: 修改maven安装路径中conf文件夹下的setting.xml文件 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> &l

  • Maven发布Jar包中文乱码解决方法

    Maven deploy 乱码 今天使用Maven发布Jar包时,发布功能都是正常的也成功上传到了仓库,就是项目跑越来后出中文中现了乱码: { "code": "SUCCESS", "success": true, "message": "鎿嶄綔鎴愬姛", "data": [ { "key": "app_force_login", "va

  • 解决IDEA中maven导入jar包一直报错问题

    查      看:   File------>Project Structure--------->Libraries如下面没有maven所引入的jar包则为该错误[1] 错误原因:  是导入的module错误,应该导入maven的module 解      决:  File------>Project Structure--------->Modules------------->选择中间项目---------->选择红色的减号(因为要重新导入module),保证现在

  • Maven打jar包的三种方式(小结)

    不包含依赖jar包 该方法打包的jar,不包含依赖的jar包,也没有指定入口类. <build> <plugins> <plugin> <!-- 指定项目编译时的java版本和编码方式 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.

  • idea+maven打jar包的两种方式

    两种打jar包的方法: jar包工程是maven下的quickstart工程 需要jar的是maven下的webapp工程(我这里是这样的 ) 一.普通jar包的打包方式: 在我们的idea工程界面,点击右上角的project structure 然后在project setting里面选择Artifacts,点击加号,选择jar,给个包名,然后apply 回到我们的工程界面,选择菜单栏中的build,下拉菜单中的build artifacts 如果是第一次打包就build,不是就rebuild

  • maven实现jar包导入+导出方式

    普通 jar 包的导出 1.点击 file 中的project.structor=>选择Artifacts=>+=>选择 jar+=>选择from modules with dependencies 2.如果你的 jar 包具有主函数main,即为可执行jar包则需要在下图所示处,输入主函数位置,点击右边文件夹,选择主函数即可 3.选择好后点击OK,切记下一步需要先应用在OK 4.导出成功后点击Builder=>build artifacts=>build/rebuil

  • Maven中jar包冲突原理与解决办法

    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲突的解决办法. 一.Maven中jar包冲突产生原因 MAVEN项目运行中如果报如下错误: Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException 十有八九是Maven jar包冲突造成的.那

  • 解决eclipse中maven引用不到已经存在maven中jar包的问题

    之前,用过maven管理项目的童鞋都知道本地会有一个${User_Home}.m2/repository仓库 是用来存放jar包的地方.但是,在eclipse中的maven仓库中 搜索不到本地仓库中的jar包. 原因是因为maven中的本地仓库的index索引没有更新,导致在eclipse的maven插件中搜索不到. 解决方案: 在eclipse中打开菜单 window-> show view –> other –> Maven -> maven repositories 打开之后

  • IDEA中打jar包的2种方式(Maven打jar包)

    前言 在讲这两种方式之前,我们先来说明一下什么是java中的jar文件 jar (Java Archive File),翻译过来就是java的档案文件,它其实也类似于我们windows下的zip文件,唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的,包含了JAR包的描述信息.主类的全类名等信息. 一:不使用Maven直接打Jar包. 1.File -->Project Structure -->A

随机推荐