1

我有一个简单的 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'
4

2 回答 2

2

发现了问题...显然需要一个 ant-junit.jar,但无论出于何种原因,在我的本地存储库中它都归 root 拥有,而不是我的本地用户帐户(OSX 系统)。所以建造者无法访问它。我从本地存储库中删除了这些项目并重新运行 buildr(它下载了所需的项目)。


更新

这也引起了其他一些问题。似乎我的本地存储库中的其他一些项目具有奇怪的权限。我最终只是归档了我的存储库并让 maven 重建它。这解决了我所有的问题。我现在有一个不错的构建文件,它只有 25 行代码,而我之前的 pom.xml 文件超过 100 行。

于 2009-07-23T14:17:06.270 回答
1

您会收到该错误,因为 JUnitTask 不在类路径中。我对 Buildr 不是很熟悉,所以不能说您是否需要指定 JUnit jar,但是如果 Buildr 使用系统类路径,请尝试将 JUnit 添加到它并看看会发生什么。

一旦你确认你的构建将在 JUnit 被侵入到类路径的情况下运行,你可以尝试改变你的配置,直到它按你预期的那样运行,或者保持原样。

您可以发布对文档相关部分的引用吗?我没有看到任何内容(在我对该网站的简短阅读中)说包括了必需的项目。

有没有可能你没有下载所有的宝石?如果你运行“gem update --system”来更新Ruby,那么“gem update buildr”你可以确保所有需要的依赖都安装好了。

于 2009-07-22T17:39:20.040 回答