公布:面向TFS的Java软件开发包

[原文发表地址] Announcing a Java SDK for TFS

[原文发表时间] 2011-5-16 3:53 AM

从一开始,TFS的可扩展性就是一个核心设计理念-因为这使得强大的第三方合作伙伴可以在其上开发(比如 Ekobit, Urban Turtle, InCycle等等),而且大多数开发小组都需要自定义他们使用的工具。为此从第一天起,我们已经提供了一个.NET库来与TFS进行交互并扩展TFS。我总是惊讶于人们使用TFS能够完成很多意想不到的任务。

今天,我很高兴地宣布我们现在也在Java端实现了这个扩展。我们刚刚把 Team Foundation Server SDK (软件开发包) for Java的一个公共下载点。

现在,您将像使用.NET一样轻松使用Java来扩展TFS。这将使得世界各地使用Team Explorer Everywhere的团队能充分在Eclipse或外部环境中自定义他们的开发环境。此外,我们有一些第三方独立软件供应商(ISV)正在使用我们新的SDK来将TFS支持添加到软件产品中。他们的反馈很好地帮助我们,确保我们能稳定、简便地使用SDK。敬请关注这些新合作伙伴在未来几周和未来几月的消息。

面向Java的TFS SDK 包括以下内容:

一个包含TFS API的可再发行的JAR文件。 这是面向Eclipse和跨平台命令行客户端的一个相同的Java代码,它在所有的团队资源浏览器的TFS插件中被使用。它提供了版本控制、工作项跟踪、生成和其他您的基于Java的应用程序中TFS中的功能访问。我们将它作为一个包含所有代码和Java依赖关系的单独JAR文件,使它轻松包含在您的应用程序中。

TFS API使用的本地代码库。 我们在API中有少量的JNI代码来处理在所有平台里不在Java中本身支持但是我们支持的功能(比如访问Kerbero进行身份验证、在MAC上与钥匙串集成等)。 我们正在使本机代码在Windows (x86, x64), Mac (Universal), Linux(x86, x64, ppc), HP-UX (ia64_32, pa_risc), Solaris(sparc, x86, x64) 和AIX (ppc)可用、可再发行并且可编译。

Javadoc格式的完整API文档。 这个代码文档和我们的开发人员编写和使用的代码文档是一样的。

代码示例。 团队都很清楚地意识到从这项大代码库入门的确是一个挑战,因此他们收集了大量代码示例来尝试帮助您上手。它包括:

  • 自定义签入策略示例
  • 自定义工作项控件示例 (包括单选项按钮控件、简单按钮控件、文件源下拉和一个外部源下拉示例)
  • 一组使用了生成和版本控制功能的控制台应用程序示例
  • 一系列展示包括工作项、版本控制和生成访问等API各个方面的简单代码段
  • 关于生成和基于Ant生成脚本的指导来帮助您开始

请点击此查看SDK的许可条款。 我们已经努力确保此项许可条款能尽可能给予您帮助。您可以在自己的应用程序里使用SDK重新分发列为免费的文件。您可以创建运行在任何由API支持的操作系统中的应用程序。没有要求声明人们必须处处-Team Explorer Everywhere,或甚至有许可证-但是您仍需确保任何访问TFS的人都被授权访问它。(通常通过一个客户端访问许可证)。

使用API对于有.NET API经验的开发人员来说应该是很熟悉的 — 但面向Java的 TFS SDK 是一个适当的Java实现,因此约定会有一点点不同(例如,它使用标准的Java样式集合、setter和getter,正如您所期待的一样)。接下来的示例将向您展示使用SDK从Java查询工作项是多么的容易。

import com.microsoft.tfs.core.TFSTeamProjectCollection;
import com.microsoft.tfs.core.clients.workitem.WorkItem;
import com.microsoft.tfs.core.clients.workitem.WorkItemClient;
import com.microsoft.tfs.core.clients.workitem.project.Project;
import com.microsoft.tfs.core.clients.workitem.query.WorkItemCollection;

public class RunWorkItemQuery
{
public static void main(final String[] args)
{
TFSTeamProjectCollection tpc = new TFSTeamProjectCollection("https://tfs2010:8080/tfs/DefaultCollection");
        Project project = tpc.getWorkItemClient().getProjects().get("Tailspin Toys");
WorkItemClient workItemClient = project.getWorkItemClient();

       // Define the WIQL query.
String wiqlQuery = "Select ID, Title from WorkItems where (State = 'Active') order by Title";

       // Run the query and get the results.
WorkItemCollection workItems = workItemClient.query(wiqlQuery);

        System.out.println("Found " + workItems.size() + " work items.");
System.out.println();

        // Write out the heading.
System.out.println("ID\tTitle");

        // Output the first 20 results of the query, allowing the TFS SDK to page
// in data as required

        final int maxToPrint = 20;
for (int i = 0; i < workItems.size(); i++)
{
if (i >= maxToPrint)
{
System.out.println("[...]");
break;
}

             WorkItem workItem = workItems.getWorkItem(i);
System.out.println(workItem.getID() + "\t" + workItem.getTitle());
}
}
}

团队一直努力创建样本和代码段来帮助您学习如何使用API,不过如果您有一些希望看到的特殊例子,而且这些例子还没有包括在内,请在留言里注明。我们将看看能为您做什么。另外,您可以登录论坛,我们的团队将会非常乐于看到您的反馈并且尽可能地提供协助。我们的成员Martin Woodward也表示,他很快会在他的个人站点上发表一些例子和教程

正如我以前提到过,从第一天起我们就希望TFS能成为一个开发的平台,在这个平台上任何人都可以创建他们喜欢的开发体验。这个面向Java的SDK是一个重要的里程碑。它保证了每个人都能平等访问同一个API,我们已经开发了这个API为我们所用,并且希望它能让更多的人在我们的平台上构建内容。这也进一步证明了我们为真正实现异构团队而在认真创建一个伟大的ALM解决方案。我很期待人们将会怎样使用SDK。如果您创建了一些有趣的东西,请务必让我知道。

Brian