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包中。
好记性不如烂笔头,最难不过坚持
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了