Dubbo-使用Maven构建Dubbo服务的可执行jar包

一、为什么要构建Dubbo服务的可执行jar包?

  1.1 Dubbo服务运行方式比较

    ?使用Servlet容器运行(Tomcat、Jetty等)  ---不可取

      --缺点:增加复杂性(多了容器的端口)

          浪费内存资源,Servlet运行要占用一定的内存

    ?自建main()方法来运行Spring容器  ---不可取 (本地调试可用)

      --缺点:Dubbo本身提供的高级特性没用上

           自己编写启动类可能会有缺陷

    ?使用Dubbo框架提供main()方法来运行Spring容器  ---建议使用

      --优点:框架本身提供(com.alibaba.dubbo.container.Main)

          可实现优雅关机(ShutdownHook)

  1.2 官方文档查看

    http://dubbo.io/books/dubbo-user-book/demos/service-container.html

    “6.40 容器服务”部分

  综上所述所以要构建Dubbo服务的可执行jar包(说了句废话,偷笑!!)

二、怎么构建?

  2.1 看看工程目录

  这个就是我们要打包成Dubbo服务的工程

  2.2 maven插件

<resources>
  <resource>
    <targetPath>${project.build.directory}/classes</targetPath>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <includes>
      <include>**/*.xml</include>
      <include>**/*.properties</include>
    </includes>
  </resource>
  <!-- 结合com.alibaba.dubbo.container.Main -->
  <resource>   <!--把resources/spring目录下的文件打包的时候打到类路径下METAINF/spring目录下-->
    <targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>
    <directory>src/main/resources/spring</directory>
    <filtering>true</filtering>
    <includes>
      <include>spring-context.xml</include>
    </includes>
  </resource>
</resources>

<pluginManagement>
  <plugins>
    <!-- 解决Maven插件在Eclipse内执行了一系列的生命周期引起冲突 -->
    <plugin>
      <groupId>org.eclipse.m2e</groupId>
      <artifactId>lifecycle-mapping</artifactId>
      <version>1.0.0</version>
      <configuration>
        <lifecycleMappingMetadata>
          <pluginExecutions>
            <pluginExecution>
              <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <versionRange>[2.0,)</versionRange>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
              </pluginExecutionFilter>
              <action>
                <ignore />
              </action>
            </pluginExecution>
          </pluginExecutions>
        </lifecycleMappingMetadata>
      </configuration>
    </plugin>
  </plugins>
</pluginManagement>
<plugins>
  <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <classesDirectory>target/classes/</classesDirectory>
      <archive>
        <manifest>
          <mainClass>com.alibaba.dubbo.container.Main</mainClass>
          <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
          <useUniqueVersions>false</useUniqueVersions>
          <addClasspath>true</addClasspath>
          <classpathPrefix>lib/</classpathPrefix>
        </manifest>
        <manifestEntries>
          <Class-Path>.</Class-Path>
        </manifestEntries>
      </archive>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <type>jar</type>
          <includeTypes>jar</includeTypes>
          <useUniqueVersions>false</useUniqueVersions>
          <outputDirectory>
            ${project.build.directory}/lib
          </outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

  2.3 maven 打包

    mvn clean package

  然后再项目的target目录下就看到

  

  打开edu-service-user.jar目录看一下结构

   

  2.4 运行jar包:

    在jar文件的目录下运行 java -jar edu-service-user.jar

  2.4 注意点:

  在import引入其他xml配置文件的地方要加 "classpath:"

  

原文地址:https://www.cnblogs.com/happyflyingpig/p/8453310.html

时间: 2024-11-07 20:11:27

Dubbo-使用Maven构建Dubbo服务的可执行jar包的相关文章

maven项目用assembly打包可执行jar包

该方法只可打包非spring项目的可执行jar包,spring项目可参考:http://www.cnblogs.com/guazi/p/6789679.html 1.添加maven插件: <!-- Maven Assembly Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactI

跟我学习dubbo-使用Maven构建Dubbo服务的可执行jar包(4)

Dubbo服务的运行方式: 1.使用Servlet容器运行(Tomcat.Jetty等)----不可取 缺点:增加复杂性(端口.管理) 浪费资源(内存) 官方:服务容器是一个standalone的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加载服务提供方,增加复杂性,也浪费资源. 2.自建Main方法类来运行(Spring容器) ----不建议(本地调试可用) 缺点: Dobbo本身提供的高级特性没用上 自已编写启动类可能会有缺陷 官方:服务容器

Gradle构建可执行Jar包(转载请注明出处)

最近开始接触Java,认识到一个似乎比Maven好用的构建工具Gradle,还来不及细细研究,但是需要构建一个可执行Jar包.上网查了一下.中文的文章千篇一律的提到一个插件apply plugin: 'executable-jar' (https://github.com/stigkj/gradle-executable-jar-plugin) ,也不知道是谁复制了谁的. 但是构建的时候不认这个插件,所以寻找其他方法. 用压缩软件打开Eclipse生成的可执行Jar包与Gradle构建的Jar包

JAVA生成(可执行)Jar包的全面详解说明 [打包][SpringBoot][Eclipse][IDEA][Maven][Gradle][分离][可执行]

辛苦所得,转载还请注明: https://www.cnblogs.com/applerosa/p/9739007.html  得空整理了关于java 开发中,所有打包方式的 一个操作方法, 有基于IDE的,有基于构建工具的. 这里还是比较建议新手朋友尽快习惯 maven 和 gradle 等构建工具自带的打包方式. 不是说逼格高,的确是因为不依赖 IDE, 配置好 一两行命令就搞定. 离开IDE 照样出包. 大概分为这几个步骤 一.  关于Jar 包(example.jar) 的 结构/作用/使

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

Maven(五)之Maven配置阿里云镜像飞快下jar包

用过Maven的人都知道Maven对于依赖的管理让我们程序员从此远离了自己去在项目中把需要的jar包导入到项目中,但是因为中央仓库是在国外的,所以在我们从中央仓库下载依赖的时候, 我们发现下载速度真的是无语了,所以我们用什么方法来解决这个问题呢?答案是:配置阿里云国内镜像 一.什么是镜像 maven默认会从中央仓库下载jar包,这个仓库在国外,而且全世界的人都会从这里下载,所以下载速度肯定是非常慢的. 镜像就相当于是中央仓库的一个副本,内容和中央仓库完全一样,目前有不少国内镜像,其中阿里云算是比

maven打包可执行jar包

创建一个文件夹haha,里面包含三项 Haha.java Main.java pom.xml pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sch

Java 将Maven项目打成可执行jar包

一.用maven-shade-plugin打包 在pom.xml文件中加入如下信息,利用Maven的maven-shade-plugin插件进行打包. <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.4<

学习dubbo(五):使用maven构建dubbo服务的可执行的jar

Dubbo服务的运行方式 1.使用Servlet容器运行(Tomcat) ----- 不可取 缺点:增加复杂性(端口.管理) 浪费资源(内存) 2.自建Main方法类来运行(Spring容器) -----不建议(本地调试可用) 缺点:Dubbo本身提供的高级特性没用上 自己编写启动类可能会有缺陷 3.使用Dubbo框架提供的Main方法类来运行(Spring容器) -----建议使用 优点:框架本身提供(com.alibaba.dubbo.container.Main) 可实现优雅关机(Shut