maven打包dubbo服务接口(maven-assembly-plugin)--zip

dubbo 服务只需要提供service层接口,并不需要用servlet容器。完全打成其他的包直接去跑,dubbo接口性能就不会因为tomcat的限制。

dubbo 容器的加载内容可以扩展,内置了spring, jetty, log4j等加载,可通过Container扩展点进行扩展,参见:Container Spring Container 。

dubbo 容器自动加载META-INF/spring目录下的所有Spring配置。 所以spring 及dubbo 的相关配置要放在/META-INF/spring 目录下。
也可以在启动参数中配置:(配在java命令-D参数或者dubbo.properties中) dubbo.spring.config=classpath*:/META-INF/spring/*.xml  ----配置spring配置加载位置。

打包配置如下:

[html]  view plain  copy
  1. <build>  
  2.         <plugins>  
  3.             <plugin>  
  4.                 <groupId>org.apache.maven.plugins</groupId>  
  5.                 <artifactId>maven-deploy-plugin</artifactId>  
  6.                 <version>2.4</version>  
  7.                 <configuration>  
  8.                     <skip>true</skip>  
  9.                 </configuration>  
  10.             </plugin>  
  11.             <plugin>  
  12.                 <groupId>org.apache.maven.plugins</groupId>  
  13.                 <artifactId>maven-jar-plugin</artifactId>  
  14.                 <version>2.4</version>  
  15.                 <configuration>  
  16.                     <excludes>  
  17.                         <exclude>**/*.properties</exclude>  
  18.                     </excludes>  
  19.                 </configuration>  
  20.             </plugin>  
  21.             <plugin>  
  22.                 <artifactId>maven-assembly-plugin</artifactId>  
  23.                 <configuration>  
  24.                     <descriptor>src/main/assembly/assembly.xml</descriptor>  
  25.                 </configuration>  
  26.                 <executions>  
  27.                     <execution>  
  28.                         <id>make-assembly</id>  
  29.                         <phase>package</phase>  
  30.                         <goals>  
  31.                             <goal>single</goal>  
  32.                         </goals>  
  33.                     </execution>  
  34.                 </executions>  
  35.             </plugin>  
  36.   
  37.             <plugin>  
  38.                 <artifactId>maven-compiler-plugin</artifactId>  
  39.                 <version>2.3.2</version>  
  40.                 <configuration>  
  41.                     <source>1.7</source>  
  42.                     <target>1.7</target>  
  43.                     <encoding>UTF-8</encoding>  
  44.                 </configuration>  
  45.                 <dependencies>  
  46.                     <dependency>  
  47.                         <groupId>org.codehaus.plexus</groupId>  
  48.                         <artifactId>plexus-compiler-javac</artifactId>  
  49.                         <version>1.8.1</version>  
  50.                     </dependency>  
  51.                 </dependencies>  
  52.             </plugin>  
  53.             <plugin>  
  54.                 <artifactId>maven-resources-plugin</artifactId>  
  55.                 <version>2.6</version>  
  56.                 <configuration>  
  57.                     <encoding>UTF-8</encoding>  
  58.                 </configuration>  
  59.             </plugin>  
  60.             <plugin>  
  61.                 <groupId>org.apache.maven.plugins</groupId>  
  62.                 <artifactId>maven-surefire-plugin</artifactId>  
  63.                 <version>2.10</version>  
  64.                 <configuration>  
  65.                     <skip>true</skip>  
  66.                     <testFailureIgnore>true</testFailureIgnore>  
  67.                 </configuration>  
  68.             </plugin>  
  69.         </plugins>  
  70.   
  71.         <resources>  
  72.             <resource>  
  73.                 <directory>src/main/resources</directory>  
  74.                 <includes>  
  75.                     <include>**/*.sh</include>  
  76.                 </includes>  
  77.             </resource>  
  78.             <resource>  
  79.                 <directory>src/main/resources</directory>  
  80.                 <includes>  
  81.                     <include>**/*.bat</include>  
  82.                 </includes>  
  83.             </resource>  
  84.             <resource>  
  85.                 <directory>src/main/java</directory>  
  86.                 <includes>  
  87.                     <include>**/*.xml</include>  
  88.                 </includes>  
  89.             </resource>  
  90.             <resource>  
  91.                 <directory>src/main/resources</directory>  
  92.                 <includes>  
  93.                     <include>**/*.xml</include>  
  94.                     <include>**/*.properties</include>  
  95.                 </includes>  
  96.             </resource>  
  97.             <resource>  
  98.                 <directory>src/main/resources</directory>  
  99.                 <filtering>true</filtering>  
  100.             </resource>  
  101.         </resources>  
  102.     </build>  
配置中指定了打包使用的 src/main/assembly/assembly.xml 配置文件:

[html]  view plain  copy
  1. <assembly>  
  2.     <id>assembly</id>  
  3.     <formats>  
  4.         <format>tar.gz</format>  
  5.     </formats>  
  6.     <includeBaseDirectory>true</includeBaseDirectory>  
  7.     <fileSets>  
  8.         <fileSet>  
  9.             <directory>src/main/assembly/bin</directory>  
  10.             <outputDirectory>bin</outputDirectory>  
  11.             <fileMode>0755</fileMode>  
  12.         </fileSet>  
  13.     </fileSets>  
  14.     <dependencySets>  
  15.         <dependencySet>  
  16.             <outputDirectory>lib</outputDirectory>  
  17.             <scope>runtime</scope>  
  18.         </dependencySet>  
  19.     </dependencySets>  
  20. </assembly>  
assembly.xml 配置文件指定了bin目录和打包后的jar 存放的位置lib目录。

dubbo 服务工程目录结构如下:


使用maven 命令打包,打包后为tar 包,解压后,运行start.bat(start.sh。相关的脚本请到上传是资源中下载)即可启动dubbo 服务。如果要在本地测试,可以写一个main 方法,直接加载spring 及dubbo的相关配置即可启动dubbo的服务

测试工程说明:


dubbo-api            dubbo 服务接口定义及数据传递的类的定义。定义了接口TicketApi和传递数据的类 TicketDTO。被dubbo-service 和 dubbo-test 依赖

dubbo-service     dubbo 服务接口实现。maven打包的配置及assembly.xml 配置文件在这工程。包含了DubboServerMain ,直接加载spring 及dubbo 配置,对外提供服务,用于测试

dubbo-test            测试。直接加载配置文件, 订阅zookeeper 中提供的服务

工程使用 spring+dubbo+zookeeper ,把服务注册到zookeeper中,相关配置不再说明。


如上面工程打包后为:dubbo-service-1.0.0-assembly.tar.gz 文件,解压后有bin和lib 两个文件夹。bin中放的是脚本,lib 放的就是jar包。使用脚本启动(zookeeper 要启动),运行测试代码即可。


说明:

要把dubbo-api 工程install 到本地maven仓库,dubbo-service 、dubbo-test 才能编译通过。

assembly.xml 配置文件中有  STDOUT_FILE=$LOGS_DIR/stdout.log ,说明了日志文件的路径。 也指定了打包的文件格式tar.gz

猜你喜欢

转载自blog.csdn.net/EQuaker/article/details/79600326