用批处理来自动化项目编译及部署(附Demo)

原文:用批处理来自动化项目编译及部署(附Demo)

阅读目录

    • 介绍
    • 详细
    • 处理
    • 结论
    • Demo下载

 

介绍

  一个项目从立项开始,可能就已经根据公司的配置模板将目录,文档结构定义出来。有动态库,也有静态库,在没有专门的CMO的时候,往往组长,若干开发人员承担版本发布的工作。次工作即枯燥,又容易出错,那么怎么样才能将这样的工作略微自动化点。以下就通过很简单的很古老的批处理来略微自动化下。

详细

一:目录结构

  每个公司的目录结构不一样,当略有相同,比如:管理库,需求库,设计库,代码库,引用库(包库),资源库,编译模板库,编译版本库,发布版本库等。
如下图:

二:生成临时版本流程:

  一般的比较正规的是:发布人员获取所以同步,然后编译,然后将编译的release下的各个文件夹拷贝出来,做记录,放到临时版本库中。也有筒靴可能会说,自己把项目的编译生成路径改到对应的地方不就OK了,虽然可以,但有时候情况比较特殊,比如都是插件开发,把路径改了,就不好调试了,不可能每个多附加进程调试吧。
  所以我们要解决的是怎么通过批处理来进行自动化编译和将编译完成文件复制到对应目录。

三:批处理

  后缀为.bat的文件就是批处理文件。以下就对比较长用到的命令做个简单描述:

echo 和 @回显控制命令
echo off #从下一行开始关闭回显
echo on #从下一行开始打开回显

md创建目录
md abc #在当前目录里建立子目录 abc
md d:\a\b\c #如果 d:\a 不存在,将会自动创建

copy拷贝文件
copy c:\test.txt d:\复制 c:\test.txt 文件到 d:\
copy c:\test.txt d:\test.bak复制 c:\test.txt 文件到 d:\ ,并重命名为 test.bak
copy c:\*.*复制 c:\ 所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录
copy con test.txt从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机

pause暂停命令
运行该命令时,将显示下面的消息:请按任意键继续 . . .
一般用于看清楚屏幕上显示的内容

set设置变量
引用变量可在变量名前后加 % ,即 %变量名%
set #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用
set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
set p=aa1bb1aa2bb2 #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2

echo %p% #显示变量p代表的字符串,即aa1bb1aa2bb2

处理

一:模拟场景

  现建有马戏团项目(Circus),项目中有Circus工程,Cat工程,Dog工程。

Circus是用来进行表演的。Circus不引用Cat,Dog(用接口,但先不定义接口)

Cat是猫动物的表演技能。

Dog是狗动物的表演技能。

先假设输出目录中有Circus主目录,主目录下有Driver子目录,Cat和Dog的编译输出均在Driver下,并且以自己本身的名字建个目录。

二:构建项目

三:编写bat文件

设置输出路径

“debugOrRelease”这个变量是来控制是编译debug还是release
@echo off
set debugOrRelease=Release
set baseOutPath=..\09.临时版本\Circus\%debugOrRelease%
set driverOutPath=%baseOutPath%\Config
set catPath=%driverOutPath%\Cat
set dogPath=%driverOutPath%\Dog

设置输入路径

set catInPath=Cat\bin\%debugOrRelease%
set dogInPath=Dog\bin\%debugOrRelease%

打印输出路径

echo 输出路径
echo.%driverOutPath%
echo.%catPath%
echo.%dogPath%

编译

如果有多解决方案(sln)可以中间加pause,防止编译出错的信息忽略掉。

@PAUSE
echo 开始编译
%windir%\microsoft.net\framework\v4.0.30319\msbuild  Circus.sln /p:Configuration=%debugOrRelease% /t:Rebuild

创建驱动目录

@PAUSE
echo 开始复制
if not exist %catPath% md  %catPath%
if not exist %dogPath% md  %catPath%

复制驱动

其中用到两种方式,一种是单个文件复制,一种是文件夹复制

echo 复制Circus
xcopy %CircusInPath% %baseOutPath% /S /Y

echo 复制Cat
copy %catInPath%\Cat.dll %catPath% /Y

echo 复制Dog
xcopy %dogInPath% %dogPath% /S /Y

echo 复制完毕
@PAUSE

结论

  上述输出:

 





 



 

从上述输出的结果我们可以看出,我们预期的目的已经完成。这样即简单又自动化,降低人为带来的错误。

Demo下载

源码下载

时间: 2024-08-30 19:38:53

用批处理来自动化项目编译及部署(附Demo)的相关文章

如何把在win下用eclipse建立的java ee项目传送到linux服务器下编译并部署?

问题描述 我在windows下部署了jdk和tomcat,开发完项目后,要部署到linux下,linux下已经安装了同样版本的jdk和tomcat,目前,我把在win下发布到tomcat的webapp目录下的项目直接拷贝到linux下tomcat的webapp目录是可以运行的,不过它不是在linux下编译的,不知道会不会有问题.我希望找到一个方法,能够简单的把整个项目源代码和文件复制到linux下完成编译并部署 解决方案 一般只要jdk版本一致,在win下编译即可.你可以把源码提交到SVN或其他

WINDOWS 服务端 SVN自动部署/一键批处理 SVN 更新项目

方法一,直接使用客户端更新 echo 一键批处理 SVN 更新项目源码 "C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:"E:\php\www" /closeonend:1 closeonend:1更新完成后关闭 其他不关闭 方法二,使用服务器端更新 此方法还是要安装SVN客户端 @echo off SET REPOS=%1 SET REV=%2 SET DIR=%R

Windows Phone 8初级教程(八) 理解编译和部署

原文地址: http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-8-Understanding-Compilation-and-Deployment 系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners Source Code: http://aka.m

Windows Phone 8初学者开发—第8部分:理解编译和部署

原文 Windows Phone 8初学者开发-第8部分:理解编译和部署 第8部分:理解编译和部署 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-8-Understanding-Compilation-and-Deployment 系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-Developmen

如何使用MFC和类型库创建自动化项目

摘要 本文详细介绍了如何自动化像Microsoft Office这样支持COM的应用程序. 更多信息 下面部分介绍了如何创建MFC项目.采用Microsoft Excel举例,你可以将前8个步骤用于 任何项目,修改9-15步用于不同的应用程序. 创建自动化项目 1. 在Microsoft Developer Studio中,创建"MFC AppWizard(exe) "项目,命名为"AutoProject." 2. 在第1步的MFC应用程序向导中,选择"D

解读ASP.NET 5 & MVC6系列(3):项目发布与部署

原文:解读ASP.NET 5 & MVC6系列(3):项目发布与部署 本章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例. 发布前的设置 由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE). 步骤:右键BookStore项目->属性->Application选项卡,选择DNX的版本,本例中,选择dnx-coreclr-win-x64.1.0.0-beta4.

手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法

如何编写智能合约(Smart Contract)?(I) 完整视频教程 https://v.qq.com/x/page/h0552ba9k8h.html 学习目标 了解智能合约 简单环境搭建 能够利用solidity编写Hello World合约 合约部署 和合约互动 使用solidity语言撰写智能合约 Ethereum上的智能合约需要使用solidity语言来撰写.虽然还有其他能用来撰写智能合约的语言如Serpent(类Python).lll(类Fortran),但目前看到所有公开的智能合约

thinkphp学习笔记3—项目编译和调试模式

原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并缓存,第二次运行时直接载入编译缓存,这样省去一些IO开销,加快执行速度.并且在3.0以上的版本中海做了一些优化: 1.合并和兴编译缓存和项目编译缓存,不再生成两个缓存文件 2.直接对本地环境生成设置和常量定义减少环境判断 3.编译缓存可以直接替换框架入口甚至项目入口,甚至脱离框架独立运行 4.通过参

《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

2.3 编译和部署ASP.NET程序 知识点讲解:光盘:视频\PPT讲解(知识点)\第2章\编译和部署ASP.NET程序.avi 当一个ASP.NET项目程序设计完毕后,需要运行才能浏览执行效果,效果满意后可以通过部署将网站发布到网络中. 2.3.1 编译.运行ASP.NET程序 通过使用Visual Studio 2012的菜单命令可以对ASP.NET的代码进行编译和运行.具体方法是依次单击菜单栏中的[生成]︱[重新生成网站]命令,如图2-40所示:也可以在"解决方案资源管理器"中右