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:"

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM