代码之家  ›  专栏  ›  技术社区  ›  Jaco Pretorius

用TFS构建Java项目

  •  1
  • Jaco Pretorius  · 技术社区  · 14 年前

    我们的代码库中很小的部分是一些遗留Java代码。我正在尝试添加一个新的构建,它将调用ant来构建这个项目。

    第一个问题是TFS不允许您创建不生成.NET解决方案的生成。我通过复制以前的生成文件并添加endtoenderation任务来解决这个问题,该任务是生成的入口点。

    问题是,没有填充任何常用的生成变量-$(builddirectory)、$(solutionroot)-全部为空。这几乎意味着如果不硬编码路径,我就不能调用我的ant任务(这是我绝对不能做的)。

    有什么想法吗?

    4 回复  |  直到 14 年前
        1
  •  3
  •   Alfred Myers    14 年前

    你可能想看看 Teamprise Build Extensions 它允许从tfs构建ant或maven任务。

        2
  •  2
  •   slf    14 年前
    1. 如果你还没有一个,那么创建一个存储和检索环境变量的任务,你肯定需要他们做与Java相关的任何事情(我相信有一个在Java中)。 MSBuild extension pack )
    2. 创建一个自定义任务来包装ant或使用 MSBuild Community Tasks 收集
    3. 运行一百万次并在运行过程中修复问题,通常从命令行执行此操作会更容易和更快,因此在终端内与msbuild.exe交朋友

    你应该能够在环境变量之间传递你想要的任何信息,使你想做的一切成为可能。我不会向你推荐硬编码路径,但你必须把配置放在某个地方,这是你想要改变什么和你想要如何组织的一个折衷。如果你真的需要,你可以把所有的配置推到一个数据库中,然后用上面链接中的一个sql任务来完成它,但是记住你增加了相当多的复杂性,这可能是不必要的。

    扪心自问:

    • 这个值多久可能改变一次?
    • 如果任务发生变化,需要完成的全部任务是什么?

    把答案写在某个地方,确保团队中的每个人都能理解。在我看来,在构建系统时,“少即是多”。找到最简单的方法,做到这一点,直到它变得不可接受,然后才增加复杂性…tfs已经足够复杂了。

        3
  •  1
  •   Andrew Hare    14 年前

    我认为您在这里使用了错误的工具-tfs对于构建除.net应用程序之外的任何其他应用程序都不是一个好的解决方案。我认为你最好还是单独使用ant。

        4
  •  1
  •   Jaco Pretorius    14 年前

    谢谢你的回答。

    最后,我求助于在生成文件旁边包含一个空的解决方案。这样,所有的变量都被填充,我只是简单地包含了一个,它做了我想做的一切。