我有一个 NetBeans 项目,我正尝试从命令行手动编译 ant
.在安装了 NetBeans 的同一台机器上运行时,它可以完美运行。
但是,如果我运行 ant
在中央持续集成服务器(未安装 NetBeans)上它在 <copyfiles>
上失败任务:
BUILD FAILED
/var/lib/jenkins/workspace/project_name/nbproject/build-impl.xml:697: Problem: failed to create task or type copyfiles
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
目标在自动生成的 build-impl.xml
中,看起来像这样:
<target depends="init" name="library-inclusion-in-archive" unless="dist.ear.dir">
<copyfiles files="${file.reference.some_dependency.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
</target>
当我查看 ant manual , copyfiles
甚至不是一个合适的 Ant 任务。那怎么了?
我怎样才能让它在没有安装 NetBeans 的机器上运行?
最佳答案
根据 this advice ,我验证了依赖关系,确实 lib/CopyLibs
目录在我们的源代码控制库中没有版本化。这就是为什么我的本地环境能够编译,但 CI 服务器不能。
将依赖项添加到类路径后 - org-netbeans-modules-java-j2seproject-copylibstask.jar
特别是 - ant 构建成功。
就我个人而言,我觉得 NetBeans 需要外部依赖来执行一项任务是荒谬的,而该任务通常作为标准 ant
任务存在。
关于netbeans - 'copyfiles' 是标准的 Ant 任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8386685/