dubbo框架的web端(war)和server端(tar.gz)结合jenkins打包方式

一.web端程序,打包成war包

jenkins配置

1.项目名称,旧文件处理配置

2.参数构建配置

3.源码库配置

4.打包文件pom.xml配置及多环境打包传参,此处传参qa(表示打测试环境包,名称自定义)

5.maven全局配置文件路径

6.打包后执行操作

pom.xml配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

 <parent>
                <groupId>com.jeck.danny</groupId>
                <artifactId>danny-cloud-parent</artifactId>
                <version>1.2.0-SNAPSHOT</version>
                <relativePath>../danny-cloud-parent</relativePath>
  </parent>

  <artifactId>test-web</artifactId>
  <packaging>war</packaging>
  <name>test-web</name>

<url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <scm> <connection>scm:svn:https://192.168.1.8/svn/test</connection> <developerConnection>scm:svn:https://192.168.1.8/svn/test</developerConnection> </scm> <dependencies> <dependency> <groupId>com.jeck.danny</groupId> <artifactId>danny-common</artifactId> </dependency> <dependency> <groupId>com.jeck.danny</groupId> <artifactId>danny-i18n</artifactId> <version>1.2.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.jeck.danny</groupId> <artifactId>danny-domain</artifactId> </dependency> <dependency> <groupId>com.jeck.danny</groupId> <artifactId>danny-user-sso</artifactId> <version>1.2.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.jeck.danny</groupId> <artifactId>danny-test-api</artifactId> <version>1.2.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency> ... <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> ...//一大堆依赖略 </dependencies> <distributionManagement> <repository> <id>danny-releases</id> <name>danny-releases</name> <url>http://maven.danny.com.cn:8091/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>danny-snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://maven.danny.com.cn:8091/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement> <build> <finalName>test-web</finalName> <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh</artifactId> <version>2.10</version> </extension> </extensions> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.16.v20140903</version> <configuration> <scanIntervalSeconds>3</scanIntervalSeconds> <stopPort>9988</stopPort> <stopKey>foo</stopKey> <webApp> <contextPath>/paicoin</contextPath> </webApp> <!-- 设置监听目录 --> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>8080</port> <maxIdleTime>60001</maxIdleTime> </connector> </connectors> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> <configuration> <tagBase>https://192.168.1.8/svn/test</tagBase> </configuration> </plugin> </plugins> </build> </project>

jenkins运行打包后,会在项目的target目录下生成一个war文件

二.server端程序,打包成tar.gz包

jenkins配置

前面配置和web端配置差不多

pom.xml配置

此处在pom.xml中调用了assembly.xml配置文件

先看pom.xml配置

<modelVersion>4.0.0</modelVersion>

        <parent>
                <groupId>com.danny.test</groupId>
                <artifactId>test-cloud-parent</artifactId>
                <version>1.2.0-SNAPSHOT</version>
                <relativePath>../test-cloud-parent</relativePath>
        </parent>

  <artifactId>test-service</artifactId>
  <packaging>jar</packaging>

  <name>test-service</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <scm>
                <connection>scm:svn:https://192.168.1.8/svn/test/tags/server/打包发布/server/业务系统</connection>
  </scm>
  <dependencies>

      <dependency>
                        <groupId>com.danny.test</groupId>
                        <artifactId>test-common</artifactId>
      </dependency>

      <dependency>
                        <groupId>com.danny.test</groupId>
                        <artifactId>test-domain</artifactId>
      </dependency>

      <dependency>
                        <groupId>com.danny.test</groupId>
                        <artifactId>test-user-api</artifactId>
      </dependency>
      <dependency>
                        <groupId>com.danny.test</groupId>
                        <artifactId>test-paicoin-api</artifactId>
                        <version>1.2.0-SNAPSHOT</version>
      </dependency>
     <!--  <dependency>
                                   <groupId>com.danny.test</groupId>
                        <artifactId>test-user-sso</artifactId>
                        <version>1.2.0-SNAPSHOT</version>
      </dependency> -->
      <dependency>
                        <groupId>com.alibaba</groupId>
                        <artifactId>dubbo</artifactId>
          </dependency>

          <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
          </dependency>

           <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>jcl-over-slf4j</artifactId>
                </dependency>

                <dependency>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.apache.poi</groupId>
                        <artifactId>poi</artifactId>
                        <version>3.13</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.poi</groupId>
                        <artifactId>poi-ooxml</artifactId>
                        <version>3.13</version>
                </dependency>

  </dependencies>



  <build>
       <resources>
                        <resource>
                                <directory>src/main/resources</directory>
                                <filtering>true</filtering>
                        </resource>
                </resources>

                <plugins>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <version>3.0</version>
                                <configuration>
                                        <source>1.7</source>
                                        <target>1.7</target>
                                        <encoding>UTF-8</encoding>
                                </configuration>
                        </plugin>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-jar-plugin</artifactId>
                                <version>2.4</version>
                                <configuration>
                                   <!-- 
                                                                                <includes>
                                                <include>*.properties</include>
                                                <include>**/*.xml</include>
                                        </includes>
                                        -->
                                        <excludes>
                                                <exclude>**/*.properties</exclude>
                                        </excludes>
                                </configuration>
                        </plugin>
                        <plugin>
                                <artifactId>maven-assembly-plugin</artifactId>
                                <executions>  <!--执行器 mvn assembly:assembly -->
                                        <execution>
                                                <id>make-assembly</id><!--名字任意 -->
                                                <phase>package</phase><!-- 绑定到package生命周期阶段上 -->
                                                <goals>
                                                        <goal>single</goal><!-- 只运行一次 -->
                                                </goals>
                                                <configuration>
                                                        <finalName>${artifactId}</finalName>
                                                        <appendAssemblyId>false</appendAssemblyId>
                                                        <attach>false</attach>
                                                        <descriptors> <!--描述文件路径 -->
                                                                <descriptor>src/main/assembly/assembly.xml</descriptor>
                                                        </descriptors>
                                                </configuration>
                                        </execution>
                                </executions>
                        </plugin>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-release-plugin</artifactId>
                                <version>2.5.3</version>
                                <configuration>
                                        <tagBase>https://192.168.1.8/svn/test/tags/server/打包发布/server/业务系统</tagBase>
                                </configuration>
                        </plugin>
                </plugins>
        </build>

</project>

assembly.xml文件配置

<assembly>
        <id>assembly</id>
        <formats>
                <format>tar.gz</format>
                <!-- <format>zip</format> <format>dir</format> -->
        </formats>
        <includeBaseDirectory>true</includeBaseDirectory>
        <fileSets>
                <fileSet>
                        <directory>src/main/assembly/bin</directory>
                        <outputDirectory>bin</outputDirectory>
                        <fileMode>0755</fileMode>
                </fileSet>
                <!-- <fileSet> <directory>src/main/assembly/conf</directory> <outputDirectory>conf</outputDirectory> 
                        <fileMode>0644</fileMode> </fileSet> -->
                <fileSet>
                        <directory>src/main/resources/</directory>
                        <outputDirectory>conf</outputDirectory>
                        <filtered>true</filtered>
                        <includes>
                                <include>dubbo.properties</include>
                                <include>property.properties</include>
                        </includes>
                </fileSet>
                <!-- <fileSet> <directory>src/test/resources</directory> <outputDirectory>conf</outputDirectory> 
                        <fileMode>0644</fileMode> </fileSet> -->
        </fileSets>
        <dependencySets>
                <dependencySet>
                        <outputDirectory>lib</outputDirectory>
                </dependencySet>
        </dependencySets>
</assembly>

同样jenkins运行打包后,会在项目的target目录下生成一个tar.gz文件

注:

  setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。

  通常一个项目可能还包含其他的外部配置文件,或者自定义的shell脚本或者bat命令等,此时应该使用assemble命令来进行构建。assembly,即组合构建的意思,使用此插件可以整合你想要的文件到最终的tar包中。

原文地址:https://www.cnblogs.com/dannylinux/p/10711548.html