Team Foundation Server原生就支持跨平台的构建,包括Ant和Maven两种构建方式。通过配置构建服务器,连接TFS源代码库,可以实现持续集成构建,自动检测代码库健康状况,进而实现自动测试和部署。本文以Maven为例,介绍如何在TFS 2013的基础上实现服务器构建。

1. 前提条件

-Team Foundation Server 2013

本文以Team Foundation Server 2013为例,实际上自TFS 2010开始就支持跨平台的服务器构建。在执行后面的操作前,首先需要用户自行安装TFS 2013服务器。安装服务器的过程比较简单,可以参考MSDN的官方文档 https://msdn.microsoft.com/zh-cn/library/vstudio/dd631902.aspx

- Java Development Kit (JDK) 1.8

目前JDK的最新版本为1.8,你可以从这里下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

- Maven 3.2.5

目前最新的版本为Maven 3.3.3,下载地址为:https://maven.apache.org/download.cgi?Preferred=ftp://mirror.reverse.net/pub/apache/

但是在试验过程中,发现最新的版本(3.3.3)在构建Maven项目时间,总提示“-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.”的错误,应该是这个版本的缺陷,只好降级到版本3.2.5.

这个错误在MSDN的论坛中有人反映过,但是没有找到有效的方法,降级是不得已而为之。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/47fdba6a-d6fc-4bed-9733-a68b577cd1a5/dmavenmultimoduleprojectdirectory-system-propery-is-not-set?forum=tee

- Eclipse LUNA

Eclipse是TFS跨平台开发的重要工具,通过集成Team Explorer Everywhere,TFS在Eclipse中的功能与Visual Studio相差无几。

Eclipse的下载路径是http://www.eclipse.org/downloads/

并参考MSDN的文档为Eclipse安装TFS插件Team Explorer Everywhere https://msdn.microsoft.com/en-us/library/vstudio/hh301122.aspx

2. 配置构建服务器

TFS的构建服务器可以与TFS应用层服务器部署在同一台机器上,可以独立安装配置,再连接到TFS的团队项目集合中,为TFS的团项目提供构建服务。这里以在同一台上为例。

2.1 在构建服务器上安装TFS构建扩展(TFS Build Extentions)

TFS Build Extentions为TFS提供了专门用户Maven和Ant构建的模板,用户可以从这里下载微软免费提供的Microsoft Visual Studio Team Foundation Server 2013 Build Extensions:

https://visualstudiogallery.msdn.microsoft.com/2011f516-15a7-4f9a-8b86-1e0894a75739

2.2 配置JDK和Maven环境

- 将JDK和Maven解压缩到计算机的任意文件夹中

- 配置服务器环境变量:JAVA_HOME, M2_HOME

- 将JDK和Maven的bin路径添加到环境变量的”path”中

- 通过运行命令“java –version”和“mvn -v”验证Maven和Java环境配置是否正确

如果内网环境部署了Maven服务器(例如Sonatype nexus http://www.sonatype.com/nexus) ,可以修改Maven的配置文件,设置镜像地址,可以提高依赖库的下载速度,同时解决构建服务器不能连接互联网的问题。(如下图)

3. 使用Eclipse创建示例项目,并上传到TFS代码库

使用Eclipse创建Maven项目前,如果需要使用本地规范的Maven配置,还需要设置Eclipse的参数,如下图(在可以连接互联网的环境中,可以忽略这一步):

Maven示例项目创建成功

4. 配置构建定义并验证构建环境

将上一步创建的Java项目上传到TFS服务器。并使用TEE配置构建定义。

运行构建定义

构建成功!

http://www.cnblogs.com/danzhang 张洪君

[补充常见问题 2015.6.23]

下面补充一下TFS集成Maven实现服务器构建过程中的常见问题:

1.  在代码中清除依赖的Jar包

必须将代码中依赖的Jar包文件清除,服务器在构建过程中会自动下载/复制依赖的Jar包文件到项目中(例如lib文件夹);否则在创建war包的过程中出现“拒绝访问”的错误。

2. 尽量将构建服务器连接到互联网

Maven构建服务器可以自动下载依赖的Jar包;如果构建服务器不能连接互联网,应该将依赖的Jar包文件提前下载到Maven服务器的本地库中(Repository),并配置Maven的配置文件settings.xml(路径为C:\apache-maven-3.2.5\conf),例如:

<settings>
 <localRepository>C:\MavenRepo</localRepository>
</settings>

TFS (Team Foundation Server) 2013集成Maven构建的更多相关文章

  1. TFS(Team Foundation Server)敏捷使用教程(四):工作项跟踪(1)

    工作项跟踪(1) 可跟踪性是软件过程的重要能力,TFS主要是以工作项来实现过程的可跟踪性.曾有人问:"你们实际项目里的工作项是怎么样的?能不能让我们看看?"我也一直很好奇别的公司T ...

  2. Team Foundation Server 2013 KEY(密钥)

    isual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥): ...

  3. Visual Studio Team Foundation Server 2013

    下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=42308 Microsoft Visual Studio Team Foun ...

  4. TFS(Team Foundation Server)介绍和入门

    在本文的两个部分中,我将介绍Team Foundation Server的一些核心特征,重点介绍在本产品的日常应用中是怎样将这些特性结合在一起使用的. 作为一名软件开发者,在我的职业生涯中,我常常会用 ...

  5. TFS(Team Foundation Server)简介和新手入门

    在两部分的文章.我会介绍Team Foundation Server一些核心功能,着重于产品的日常应用是如何将这些功能结合使用. 作为一个软件开发.在我的职业生涯,.我常常用于支持软件开发过程中大量的 ...

  6. Team Foundation Server 2013 with Update 3 Install LOG

    [Info   @10:14:58.155] ====================================================================[Info   @ ...

  7. TFS文件编码检查机制和修改(Team Foundation Server 2013)

    TFS的版本控制系统会自动按照下面的标准检测代码文件的编码格式: 1. 首先,如果代码文件包含了BOM部分,则使用BOM中制定的编码格式打开文档 什么是BOM (Byte order mark)? h ...

  8. TFS(Team Foundation Server) 权限设置记录

    环境: TFS2012 + win7 1.安装好TFS 2.创建系统用户组: TFSAdmins.TFSDevs.TFSUsers 分别为TFS管理人员组.TFS开发人员组.TFS普通用户组. 如下图 ...

  9. Team Foundation Server 2013 Update 3 下载激活

    http://www.microsoft.com/zh-cn/download/details.aspx?id=43728 支持的操作系统 Windows 7 Service Pack 1, Wind ...

随机推荐

  1. 设置修改CentOS系统时间和时区

    1.yum install ntp,安装时间服务ntpdate time-a.nist.gov && hwclock -w (跟网络同步时间,并且写入主板BIos) 2.chkconf ...

  2. CFGym 101158B(巨坑题)

    前言:无话可说,看懂题意就没什么难度了. 题意:对于[0, 9999]区间内的每一个数b,通过输入的转换表,得到一个e值,把这个值添加到b的后面,得到一个五位数c.对于c的每一位,从0枚举到9,得到5 ...

  3. 十四.jQuery解析之浏览器嗅探

    Chrome和Safrai使用的是webkit作为内核引擎,因此如果 jQuery.browser.webkit为true,则表示浏览器是chrome或safari; 如果jQuery.browser ...

  4. 软件测试——等价类划分(EditText * 3)

    一.程序要求 EditBox 同时允许输入三个1到6个英文字符或数字,点击确定结束. 二.测试分析 编号 第一个输入框 第二个输入框 第三个输入框 输出 1 null null null 三个输入框均 ...

  5. Python之单元测试框架unittest

    创建class继承unittest,每一个测试用例是以test开头的函数,先执行setup,然后用例按照字母的顺序执行,然后执行teardown import unittest class demo( ...

  6. leetcode219

    public class Solution { Dictionary<int, List<int>> dic = new Dictionary<int, List< ...

  7. js阻止冒泡和默认事件(默认行为)详解- jquery DefaultPrevented 函数

    <!DOCTYPE html> <html>     <head>     <meta charset="UTF-8">     & ...

  8. HBase实验(CRUD和MR入库)

    目录 前期准备 在HBase shell中实现CRUD操作 1. 启动命令行客户端 2. 创建表 3. 删除.新增列族 4. 删除表teacher 5. 新增数据 6. 查看数据 用Java API实 ...

  9. Linux内存地址映射

    引言 看过原博主的一些文章,写得很好,虽然博主不提倡这种拿来主义,但我还是忍不住一时手痒.呵呵本文是针对32位x86 CPU中Linux内核地址映射过程的详细介绍和示例.其中由浅入深,介绍了相关寄存器 ...

  10. Go Packages、Variables、functions

    [Go Packages.Variables.functions] 1.定义包名. 2.引入Package. 3.定义导出的变量.首字母必须大写. 4.函数.Notice that the type ...