详解用maven将dubbo工程打成jar包运行

 更新时间:2019年04月29日 15:01:15   作者:sf4y  
这篇文章主要介绍了详解用maven将dubbo工程打成jar包运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

maven打包方式

使用maven打包插件maven-jar-plugin

pom.xml文件最后新增以下代码。

maven-dependency-plugin是指将依赖的jar包复制到指定目录

maven-resources-plugin将依赖的resources复制到指定目录

 <build>
    <plugins>
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-jar-plugin</artifactId> 
        <version>2.6</version> 
        <configuration> 
          <archive> 
            <manifest> 
            <!--  是否依赖外部jar包 -->
              <addClasspath>true</addClasspath> 
              <!-- 依赖外部jar包路径 -->
              <classpathPrefix>lib/</classpathPrefix> 
 <!-- 启动函数 -->              <mainClass>com.alibaba.dubbo.container.Main</mainClass> 
            </manifest> 
          </archive> 
           <!-- 打包之后输出目录 --> 
          <outputDirectory>${project.build.directory}/maven-archiver</outputDirectory>
<!--  剔除已打包的配置文件 -->
           <excludes>
             <exclude>*.*</exclude>
             <exclude>config/*</exclude>
             <exclude>config/tencent/*</exclude>
             <exclude>META-INF/spring/*</exclude>
           </excludes>
        </configuration> 
      </plugin> 

<!--       拷贝依赖的jar包到lib目录 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>
                ${project.build.directory}/maven-archiver/lib
              </outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
<!--  拷贝依赖的资源文件包到resources目录 -->
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>package</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/maven-archiver/resources</outputDirectory>
              <resources>
                <resource>
                  <directory>${basedir}/src/main/resources</directory>
                  <filtering>true</filtering>

                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

运行jar包方式

打包之后的目录结构

包含了class文件,以及需要的配置文件信息(不包含excludes的配置文件)


MANIFEST.MF中包含了运行需要的信息

Class-Path: lib/commons-beanutils-1.8.3.jar lib/commons-betwixt-0.8.jar
...
Main-Class: com.alibaba.dubbo.container.Main

java -jar

启动命令

java -jar 执行命令时,会用到目录META-INFMANIFEST.MF中Main-Class的参数,这个是在打包的时候指定函数的入口。

java -jar x-0.0.1-SNAPSHOT.jar

java -cp

启动命令

java -cp .:x-0.0.1-SNAPSHOT.jar packname.mainclassname

因为我工程中需要引用外部的resources文件所以我通常用这种方式启动

配置文件地址是绝对路径

java -cp /Users/username/resources:dubbo-service-1.0.jar com.alibaba.dubbo.container.Main

-cp-classpath是相同的效果

java -cp 是指定运行所依赖其他类的路径,通常是类库、jar 包之类,多个依赖在Window 上用分号";"隔开,linux上用":"隔开。

表达式支持通配符

java -cp .:/Users/username/*.jar packname.mainclassname

打成一个jar包

如果需要将依赖的jar包都达到一个jar包中运行,可以使用maven-shade-plugin这个插件。

这个插件的功能主要是:将依赖的jar包打包到当前jar包,并且在打包的时候把类重命名,可以解决jar包的多版本冲突,具体可以查询官方插件文档。

参考文档

maven官方插件文档

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java中计算集合中元素的出现次数统计

    Java中计算集合中元素的出现次数统计

    本文主要介绍了Java中计算集合中元素的出现次数统计,使用Collections类配合HashMap来统计和java lamb 计算这两种方式,具有一定的参考价值,感兴趣可以了解一下
    2024-02-02
  • springboot项目docker分层构建的配置方式

    springboot项目docker分层构建的配置方式

    在使用dockerfile构建springboot项目时,速度较慢,用时比较长,为了加快构建docker镜像的速度,采用分层构建的方式,这篇文章主要介绍了springboot项目docker分层构建,需要的朋友可以参考下
    2024-03-03
  • Java基本数据类型(动力节点java学院整理)

    Java基本数据类型(动力节点java学院整理)

    Java数据类型(type)可以分为两大类:基本类型(primitive types)和引用类型(reference types)。下面是动力节点给大家整理java基本数据类型相关知识,感兴趣的朋友一起学习吧
    2017-03-03
  • Java使用junit框架进行代码测试过程详解

    Java使用junit框架进行代码测试过程详解

    单元测试就是针对最小的功能单元编写测试代码,Junit是使用Java语言实现的单元测试框架,它是开源的,Java开发者都应当学习并使用Junit编写单元测试。本文就来讲讲Junit框架的使用教程,需要的可以参考一下
    2023-02-02
  • JVM核心教程之JVM运行与类加载全过程详解

    JVM核心教程之JVM运行与类加载全过程详解

    我们都知道一个java程序运行要经过编译和执行,但是这太概括了,中间还有很多步骤,下面这篇文章主要给大家介绍了关于JVM核心教程之JVM运行与类加载全过程的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-04-04
  • 详解SpringBoot2 使用Spring Session集群

    详解SpringBoot2 使用Spring Session集群

    这篇文章主要介绍了SpringBoot2 使用Spring Session集群,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • java中ArrayList与LinkedList对比详情

    java中ArrayList与LinkedList对比详情

    这篇文章主要通过实例对Java中ArrayList与LinkedList进行了对比,需要的朋友可以参考下
    2017-04-04
  • IDEA快速显示Run DashBoard的图文详解

    IDEA快速显示Run DashBoard的图文详解

    这篇文章主要介绍了IDEA快速显示Run DashBoard的图文详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java通过百度API实现图片车牌号识别

    Java通过百度API实现图片车牌号识别

    这段时间做项目需要用java程序进行车牌识别,因此尝试做了下这个程序,本代码功能是通过调用百度API实现的,感兴趣的可以了解一下
    2021-06-06
  • Mybatis联合查询的实现方法

    Mybatis联合查询的实现方法

    本文主要介绍了 Mybatis联合查询的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论