我有一个简单的maven2 java项目(JMS中继系统)。在我们发布第一个版本之后,我们发现我们花了更多时间配置maven而不是实际编码。
对于下一个版本,我们想要清理构建过程,有人建议迁移到构建器。所以我的任务就是做到这一点。
我根据他们网站上的文档设置了buildr(1.3.4)。然后从项目的根目录中键入buildr命令,然后通知buildr根据我的pom.xml创建构建文件。处理得很好并编译了所有代码。在buildr开始运行测试之前,一切都很好。这是输出:
Test framework error: taskdef class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask cannot be found
显然,指定的类不在我的类路径中。但是,构建器文档说明包含了基本测试所需的所有必需项。他们的文档并没有说他们需要任何特定的ant或ant版本的库。虽然我确实安装了ant 1.7.0(但不包括在我的类路径中)。
有没有人见过这个?
我找到了maven存储库中臭名昭着的ant-optional jar。在我的test.with选项中包含它并没有解决问题。
使用--trace运行buildr命令会提供此额外信息......
Tests failed!
/pathtoruby/buildr-1.3.4/lib/buildr/core/test.rb:455:in `run_tests'
/pathtoruby/buildr-1.3.4/lib/buildr/core/test.rb:199:in `initialize'
答案 0 :(得分:2)
发现问题...显然有一个需要的ant-junit.jar,但无论出于什么原因,在我的本地存储库中它都归root所有,而不是我的本地用户帐户(OSX系统)。因此构建器无法访问它。我从本地存储库中删除了项目并重新构建了构建器(它下载了所需的项目)。
这也引起了一些其他问题。似乎我本地存储库中的一些其他项具有奇怪的权限。我最终只是存档我的存储库并让maven重建它。这解决了我的所有问题。我现在有一个很好的构建文件,与我以前的超过100行的pom.xml文件相比,有25行代码。
答案 1 :(得分:1)
您收到该错误,因为JUnitTask不在类路径上。我对Buildr不太熟悉,所以不能说你是否需要指定JUnit jar,但是如果Buildr使用系统类路径,请尝试将JUnit添加到它,看看会发生什么。
一旦你确认你的构建将运行JUnit入侵到类路径,你可以尝试改变你的配置,直到它按预期运行,或保持原样。
您可以将参考文献发布到文档的相关部分吗?我没有看到任何内容(在我非常简短的网站阅读中),其中包含所需的项目。
你有可能没有下载所有的宝石吗?如果您运行“gem update --system”来更新Ruby,那么“gem update buildr”可以确保所有依赖项都已安装。