当试图构建此项目时:
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文件(通过将布局保留在默认值中来测试这个值),就不会有任何抱怨。
现在实际的问题是:我是否需要添加一个库,以便buildr可以找到ant,或者我可以这样做呢?
为了记录在案:我用jruby -S gem install buildr安装了buildr,并使用jruby -S buildr package运行它。
发布于 2012-12-09 02:13:47
Buildr使用Rake进行任务相关性评估和执行。然而,Rake并不了解如何具体地构建Java项目。Buildr没有重写它在ruby中支持的所有任务,而是使用ant任务来实现它自己的一些任务。(我可以马上想到的一个是运行JUnit测试;我相信还有其他测试。)所以Buildr需要Ant。
您可以添加适当的远程存储库,或者确保ant的正确版本在每台将使用构建文件的计算机上的m2缓存中。对于错误消息中的工件,预期的路径是$HOME/.m2/repository/org/apache/ant/ant/1.8.3/ant-1.8.3.jar。
请注意,ant可能不是buildr试图下载的唯一依赖项。如果不想定义远程存储库,则必须对每个依赖项执行此手动解析。
(请注意,如果在没有构建文件的目录中运行buildr,它将为您生成一个。它生成的存储库将设置一个适当的远程存储库。)
发布于 2012-12-09 19:38:09
正如瑞德所做的那样,Buildr在幕后使用Ant来实现它的一些任务,并将在需要时尝试下载所需的库。
我通常在构建文件中注册一个远程存储库,这样,如果库还没有本地缓存,构建就知道从哪里下载库。因此,请尝试将以下内容添加到您构建的顶部。
repositories.remote << 'http://repo1.maven.org/maven2'https://stackoverflow.com/questions/13781123
复制相似问题