我必须通过FTP在TeamCity-Agent上构建后复制文件。 orndinary buildjob工作本身工作正常。触发自定义脚本也会成功完成。 “通过ftp复制文件”步骤失败,并显示以下错误:
[15:34:31]: copyFiles
[15:34:31]: [copyFiles] ftp
[15:34:31]: [ftp] Could not create type ftp due to java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClientConfig
我在网上搜索了一段时间,发现很多次相同的答案:“你必须把commons-net.jar和jakarta-oro.jar放在你的ANT-plugin目录中。”所以我下载了这两个文件并将其复制到C:\ TeamCity \ buildAgent \ lib中,但错误仍然存在。
现在的问题是:
我在哪里复制这些文件以使FTP工作?还是我走错了路?
答案 0 :(得分:3)
你把jar放到了错误的地方,它必须在Ant的类路径中,而不是在构建代理的类路径中。
你应该找到 ant.zip 文件(TeamCity\WEB-INF\plugins\ant-tool\agent\ant.zip
)并输入所需的jar(例如 commons-net-1.4.1.jar ) ant.zip文件的ant\lib
目录。
重新打包zip后,TeamCity将使用新的Ant版本更新构建代理,并且 commons-net 依赖关系将通过自己的类路径自动为Ant提供。
请注意,每次将TeamCity更新为新版本时,都必须重复此步骤。
另一种选择是手动在构建代理机器上安装Ant,并将TeamCity配置为使用自定义Ant安装(在Ant的lib目录中具有所有必需的自定义依赖项),但是如果您有许多构建代理,则不方便,但是您不会更新TeamCity服务器时必须重复此步骤。
答案 1 :(得分:2)
Ant-net-task工具与TeamCity捆绑在一起。此工具包含FTP,sshexec,scp和mail所需的jar文件。
使用它额外的Ant命令行参数: -lib“%teamcity.tool.ant-net-tasks%”应该添加。