Buildr失败,“无法下载蚂蚁”

时间:2012-12-08 19:36:29

标签: java buildr

尝试构建此项目时:

project_layout = Layout.new
project_layout[:source,:main,:java] = 'src'
project_layout[:source,:test,:java] = 'test'

define 'hausaufgaben', :layout => project_layout do
    project.version = '1.0'
    package :jar
end

我收到了这个错误:

RuntimeError : Unable to download org.apache.ant:ant:jar:1.8.3. No remote repositories defined.

从这条消息我收集到内部构建器使用ant(奇怪的是,我以为它使用Rake构建)。 Quickstart没有提到这一点。更令人讨厌的是我已经拥有了蚂蚁(1.8.2而不是1.8.3,但这不应该产生如此巨大的差异),奇怪的是,只要buildr找不到任何java文件就没有抱怨(通过将布局保留为默认值来测试)。

现在问到实际问题:我添加一个存储库,其中buildr可以找到ant,否则我可以这样做吗?

记录:我使用jruby -S gem install buildr安装了buildr并使用jruby -S buildr package运行它。

2 个答案:

答案 0 :(得分:5)

正如Rhett所说,Buildr使用Ant来实现其中的一些任务,并将在需要时尝试下载所需的库。

我通常在构建文件中注册一个远程存储库,以便构建知道从哪里下载库(如果它尚未在本地缓存)。因此,请尝试在构建的顶部添加以下内容。

repositories.remote << 'http://repo1.maven.org/maven2'

答案 1 :(得分:2)

Buildr使用Rake执行任务依赖性评估和执行。但是,Rake并不知道如何专门构建Java项目。 Buildr不是重写它在ruby中支持的每个任务,而是使用ant任务来实现它自己的一些任务。 (我能想到的就是运行JUnit测试;我确信还有其他测试。)因此,Buildr需要Ant。

您可以添加适当的远程存储库,也可以确保在使用构建文件的每台计算机上的m2缓存中都有正确版本的ant jar。对于错误消息中的工件,预期路径为$HOME/.m2/repository/org/apache/ant/ant/1.8.3/ant-1.8.3.jar

请注意,ant可能不是构建器尝试下载的唯一依赖项。如果您不想定义远程存储库,则必须为每个依赖项执行此手动解析。

(请注意,如果您在没有构建文件的目录中运行buildr,它将为您生成一个。它生成的那个将设置适当的远程存储库。)