2

尝试构建此项目时:

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.

从这条消息中,我收集到 buildr 在内部使用 ant(奇怪,我以为它使用 Rake 进行构建)。快速入门没有提到这一点。更烦人的是我已经有了 ant(1.8.2 而不是 1.8.3,但这不应该有那么大的区别),而且奇怪的是只要 buildr 没有找到任何 java 文件就没有抱怨(通过将布局保留为其默认值对此进行了测试)。

现在到实际问题:我是否必须添加一个构建器可以找到 ant 的存储库,或者我可以这样做吗?

作为记录:我安装了 buildrjruby -S gem install buildr并使用jruby -S buildr package.

4

2 回答 2

5

正如 Rhett 所指出的,Buildr 在幕后使用 Ant 来实现它的一些任务,并会在需要时尝试下载所需的库。

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

repositories.remote << 'http://repo1.maven.org/maven2'
于 2012-12-09T19:38:09.953 回答
2

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

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

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

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

于 2012-12-09T02:13:47.973 回答