2

使用 Hudson、Ant 1.7、Tomcat 6.20、JDK 1.6 和 JDK 1.5;全部在 Windows 盒子上。

我的 WAR 文件的 Ant 构建脚本使用存储在远程服务器上的 JAR。远程服务器的目录路径在 Windows 中映射为网络驱动器。build.properties 文件用于指定 JAR 依赖项的路径。使用 Ant 构建时,无论是在命令行还是在 Eclipse 中,WAR 都会成功构建和部署。

来自 build.properties 的示例:

lib.log4j=S:/Support/JARs/log4j-1.2.15.jar

在上面的条目中,Windows 中映射的网络驱动器是“S”驱动器。

我目前正在本地工作站上评估 Hudson。在 Hudson 中,如果我尝试使用映射到 JAR 的网络驱动器路径,构建会失败。如果我将 JAR 复制到本地目录(以便它们位于 C:/Support/JAR 中),则构建会成功编译和创建 WAR。

如何让 Hudson 尊重映射的网络驱动器路径?另外,有没有办法避免在 Hudson 用户界面中传递 Ant 参数,而是实际使用 build.properties 文件?Hudson 似乎无法读取 build.properties,否则。

非常感谢。

迈克·昆特尔

4

2 回答 2

8

我假设您将 hudson 作为 Windows 服务运行。服务环境与普通用户有些不同,例如它将具有最少的网络权限或没有网络权限。此外,驱动器映射发生在登录期间并且特定于用户会话 - 因此服务无法真正看到这些驱动器,因为在用户注销并且驱动器未映射后服务可能仍需要运行。

您可以尝试将 hudson 服务配置为使用具有网络权限的帐户,并将构建脚本更改为使用 UNC 路径(\server 类型路径)

另一种选择是在从登录的用户帐户运行的从属中进行构建。它会起作用,但它很讨厌。

一些有用信息的链接:

  1. 信息:服务和重定向驱动器
  2. 创建 Windows 服务时的一些最佳实践的描述
于 2009-08-17T06:40:16.020 回答
0

Jim T,非常感谢您的出色回答!

总而言之,在 Windows 上,Tomcat 实例需要对 Windows 映射驱动器具有权限(一种在具有这些权限的用户帐户下运行 Tomcat 的解决方案),并且必须使用 UNC 路径(//remote_server_name/directory_path)。在 Linux 上,远程安装的 Windows 驱动器可以工作(使用 mount 命令)。

我没有尝试在奴隶中进行构建的第二个建议。

于 2009-10-07T03:01:57.330 回答