尝试构建此项目时:
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
运行它。
答案 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,它将为您生成一个。它生成的那个将设置适当的远程存储库。)