我对Ivy不熟悉。我认为这是一种从存储库自动下载jar的实用程序,比如maven。
我已经下载了一个项目(red5来自svn checkout http://red5.googlecode.com/svn/java/server/trunk/
命令),它是用Ivy配置的。问题不在于red5,而在于Ivy。
在我用Eclipse的SVN插件下载了这个项目后,我用鼠标右键选择了它,并执行了Ivy-Resolve
命令(使用IvyDE Eclipse插件)。之后我发现在包资源管理器的ivy.xml[*]
节点下出现了很多jar。
我猜这些图书馆是Ivy下载的。
但生成的源代码有一个错误,表明一个jar是旧版本的。这是jaudiotagger-1.0.8.jar
。它的包org.jaudiotagger.tag
不包含源所需的FieldKey
类。
接下来,我查看"ivy.xml"并在那里看到
<dependency name="jaudiotagger" rev="2.0.4-SNAPSHOT" />
这不意味着配置需要2.0.4版本的jar吗。那Ivy为什么要下载1.0.8版本呢?
如何检查存储库是否包含必需的文件?Maven中央存储库包含2.0.3版本,它不是2.0.4版本,但比1.0.8版本更新。Ivy应该浏览一下吗?
编辑1
我在这里找到了2.0.4版本的pom文件:http://download.java.net/maven/2/org/jaudiotagger/2.0.4-SNAPSHOT/jaudiotagger-2.0.4-SNAPSHOT.pom
我想我可以从同一个目录中获取jar本身。
但是,我可以将这个地方配置为Ivy的存储库吗?这个地方是否是Maven兼容的存储库?
项目的根文件夹中有一个ivysettings.xml文件。它包含构建脚本使用的所有存储库。
您可以很容易地将java.net添加为一个额外的存储库,如下所示:
<ibiblio name="java.net" m2compatible="true" root="http://download.java.net/maven/2/"/>
参考:
- ibiblio分解器
- ivysettings.xml
jaudiotagger决心
我试图重现你的错误,但对我来说,2.0.4快照是在谷歌代码库中找到的:
trying http://red5.googlecode.com/svn/repository/jaudiotagger-2.0.4-SNAPSHOT.jar
tried http://red5.googlecode.com/svn/repository/jaudiotagger-2.0.4-SNAPSHOT.jar
googlecode: no ivy file found for red5#jaudiotagger;2.0.4-SNAPSHOT: using default data
checking red5#jaudiotagger;2.0.4-SNAPSHOT[default] from googlecode against [none]
module revision kept as first found: red5#jaudiotagger;2.0.4-SNAPSHOT[default] from googlecode
found red5#jaudiotagger;2.0.4-SNAPSHOT in googlecode