东家规定了发布项目包的目录结构,为了符合东家的规范,项目在build的过程中,必须自定义打包!
ant不太熟悉,使用的是maven-assembly-plugin
首先是在pom.xml文件中引用plugin
<!-- 自定义打包插件.-->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<finalName>${artifactId}</finalName>
<descriptors>
<descriptor>assembly-win32zip.xml</descriptor>
<!--<descriptor>assembly-autotest.xml</descriptor>
<descriptor>assembly-win64zip.xml</descriptor>
<descriptor>assembly-linux32tar.xml</descriptor>
<descriptor>assembly-linux64tar.xml</descriptor>
-->
</descriptors>
<archive>
<manifestEntries>
<version>${pom.version}</version>
<build-time>${maven.build.timestamp}</build-time>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>distro-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
编写assembly-win32zip.xml,该配置文件主要是配置输出目录的,代码如下:
<?xml version="1.0" encoding="utf8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<!-- 产生zip文件的名字 -->
<id>${version}-${maven-build-timestamp}-win32</id>
<formats>
<format>zip</format>
</formats>
<!-- 将全部依赖放到/lib目录下 -->
<dependencySets>
<dependencySet>
<outputDirectory>/server/lib</outputDirectory>
</dependencySet>
<!--dependencySet>
<outputDirectory>/selfguard/lib</outputDirectory>
</dependencySet-->
</dependencySets>
<!-- 根目录下的默认bin,config,log三个目录会被添加到zip中 -->
<fileSets>
<!-- windwos jdk 目录 -->
<fileSet>
<directory>d:\jit_ci_build\jdk\jdk1.6.0_18_win32</directory>
<outputDirectory>/jre</outputDirectory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>*.zip</exclude>
</excludes>
</fileSet>
<!-- 替换exe 名称 -->
<fileSet>
<directory>/docs/package/win32</directory>
<outputDirectory>/jre/bin</outputDirectory>
<includes>
<include>**</include>
</includes>
</fileSet>
<!-- 构建目录 -->
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>/server</outputDirectory>
<includes>
<include>*.txt</include>
<include>*.cer</include>
<include>bin/**</include>
<include>config/**</include>
<include>log/</include>
<include>temp/</include>
<include>conf/</include>
<include>common/</include>
<include>server/</include>
<include>webapps/**</include>
</includes>
<excludes>
<exclude>readme.txt</exclude>
<exclude>coverage.txt</exclude>
<exclude>*.log</exclude>
<exclude>**/_svn/</exclude>
</excludes>
</fileSet>
<!-- 创建webapp目录 -->
<fileSet>
<directory>web</directory>
<outputDirectory>/server/web</outputDirectory>
<includes>
<include>conf/**</include>
<include>webapps/**</include>
</includes>
<excludes>
<exclude>*.txt</exclude>
<exclude>*.log</exclude>
<exclude>**/_svn/</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>../rmsweb/target/rmsweb</directory>
<outputDirectory>/server/webapps/ROOT</outputDirectory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>*.txt</exclude>
<exclude>*.log</exclude>
<exclude>**/_svn/</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
分享到:
相关推荐
在IT行业中,Laravel是一个非常流行的PHP框架,用于构建优雅且高效的Web应用程序。...理解并实施这样的自动化流程对于现代Web开发团队来说是必要的,因为它能促进敏捷开发,确保快速而可靠的软件发布。
本项目是基于Vue.js和Vue CLI构建的,旨在提供一套完整的敏捷开发底层结构,以加速Web应用程序的开发流程。Vue CLI是Vue官方提供的脚手架工具,它大大简化了项目的初始化和配置工作,使得开发者可以快速地搭建开发...
对于大型Maven项目团队来说,使用这样的工具可以显著提高开发效率,减少错误,同时也能更好地支持敏捷开发和持续集成/持续部署(CI/CD)流程。 总之,"google-maven-exploder"是Google为优化Maven项目管理而提供的一...
在持续集成(CI)中,构建代理是核心组件之一,它负责执行实际的构建任务,如编译代码、运行测试、打包应用等。Web应用程序形式的构建代理使得用户可以通过浏览器远程控制和监控构建过程,这对于分布式团队尤其有用...
Python库“gardener_cicd_cli-1.415.0-py3-none-any.whl”是一个用于持续集成和持续部署(CI/CD)的工具,专为Python开发环境设计。这个压缩包包含了该库的最新版本1.415.0,支持Python 3解释器,并且适用于任何操作...
- **优点**:降低界面更新的影响范围,提高UI迭代速度,减少代码冲突,有利于敏捷开发。 - **实现方式**:使用CocoaPods或Carthage等依赖管理工具创建可重用的组件库,或者利用iOS的Container View Controller来...
Hoodie-admin-dashboard遵循现代前端开发的最佳实践,可能包含了模块化结构,如使用CommonJS或ES6模块,以及利用构建工具如Webpack或Rollup进行打包。这使得代码组织清晰,易于维护。同时,它可能还采用了响应式设计...
总的来说,CruiseControl-2.3.1是一个强大且灵活的项目管理工具,尤其适用于需要频繁构建和测试的敏捷开发环境。虽然相对小众,但它提供的功能和价值不容忽视。如果你对持续集成感兴趣或者正在寻找一个有效的项目...
4. 构建脚本:在Jenkins Job中,我们可以编写或者引用已有的构建脚本(如build.sh或build.gradle),执行编译、测试、打包等任务。 5. 部署:完成构建后,Jenkins可以根据配置自动将结果部署到测试或生产环境,实现...
在Python世界里,这种打包方式通常用于发布未编译的源码,使得开发者可以自定义构建过程。 接着,我们来看看标签。"zookeeper"是一个分布式协调服务,由Apache开发,广泛应用于分布式环境中的配置管理、命名服务和...
- **看板概念**:工作看板源自敏捷开发方法,常用于任务管理,分为不同的列(如“待办”、“进行中”和“已完成”),卡片代表每个任务,可以在列之间移动。 - **数据模型**:在Flutter应用中,工作看板的数据模型...
云原生(Cloud Native)是一种构建和运行应用程序的方法,强调利用容器、微服务、声明式API以及持续交付和DevOps文化来实现快速迭代和敏捷性。"ambiance-voice-assistant"可能设计为可以轻松部署在Kubernetes或...
云原生是一种构建和运行应用程序的方法,它强调利用容器化、微服务架构、持续交付和DevOps文化来实现快速迭代和敏捷开发。Dory-Engine与这些原则相吻合,它支持将应用程序打包成容器镜像,使得每个服务都能独立部署...
同时,“云原生”(Cloud Native)是指设计和构建的应用程序,能够充分利用云计算的弹性、可伸缩性和敏捷性。这表明onespacemedia-cms可能被设计为适应云环境,支持自动化部署、容器化以及微服务架构。 在Python库...
“云原生”(Cloud Native)是一种构建和运行应用程序的方法,它强调利用容器、微服务、持续交付和声明式API等技术,以实现敏捷性、可移植性和弹性。 “Python库”标签则表明“fugue-icons”是一个Python编程语言的...
【Jenkins】是一款开源的持续集成工具,广泛应用于软件开发过程中的自动化构建、测试和部署。它支持多种编程语言和版本控制系统,如Java、Python、Git等,通过定时任务或触发器实现持续集成和持续交付。 Jenkins的...
云原生(Cloud Native)是一种构建和运行应用程序的方法,它充分利用了云计算的优势,如松散耦合、微服务架构、持续交付和敏捷性。这里的“Python库”暗示了mypy-boto3-mediatailor可能是为了帮助开发者更方便地在...
结合Git进行版本控制,使用Jenkins或Travis CI等工具实现持续集成,自动化部署,提高开发效率。 总结,SpringBoot在毕业生离校管理系统中的应用,不仅简化了开发流程,提高了开发效率,而且通过其强大的功能和灵活...
Play Framework以其独特的设计理念,如自动热部署、无状态架构和强大的模板引擎,为Java开发者提供了一个高效、敏捷的Web开发平台。通过学习和掌握上述知识点,开发者能够更好地利用Play Framework构建高性能、可...
**Python-Ansible:构建简单IT自动化的利器** Ansible是一款强大的自动化工具,它以其简洁易用的特性在IT行业中赢得了广泛的认可。作为一款开源软件,Ansible的主要目标是简化应用程序和系统的部署、配置以及管理...