我无法按配置名称检索预期的依赖项。我有一个共享库,我将使用以下 ivy 文件发布到本地存储库:
<?xml version="1.0"?>
<ivy-module version="2.0">
<info organisation="my.org" module="my-stuff" status="release"/>
<configurations>
<conf name="runtime"/>
<conf name="provided" extends="runtime"/>
<conf name="test" extends="provided"/>
</configurations>
<publications>
<artifact name="my-stuff" type="jar" ext="jar" conf="*"/>
<artifact name="my-stuff" type="source" ext="zip" conf="*"/>
</publications>
<dependencies>
<dependency org="javax.servlet" name="servlet-api" rev="2.4" conf="provided,test -> master"/>
<dependency org="org.apache.tomcat" name="tomcat-dbcp" rev="7.0.47" conf="provided,test -> master"/>
<dependency org="log4j" name="log4j" rev="1.2.17" conf="* -> master"/>
<dependency org="my.org" name="my-module" rev="1.2.3" conf="* -> default"/>
<dependency org="junit" name="junit" rev="4.5" conf="provided,test -> master"/>
<dependency org="org.apache.ant" name="ant" rev="1.8.4" conf="provided,test -> master"/>
</dependencies>
</ivy-module>
到目前为止,一切都很好。我发布了我的东西
jar,如果我尝试通过配置检索它的依赖项,我会得到我期望的结果,运行时配置中有两个依赖项,提供的和测试配置中各有六个依赖项。当我试图检索依赖于我的东西
的依赖项时,问题就开始了。我使用这个常春藤文件:
<?xml version="1.0"?>
<ivy-module version="2.0">
<info organisation="my.org" module="test-my-stuff" status="release"/>
<configurations>
<conf name="runtime"/>
<conf name="provided" extends="runtime"/>
<conf name="test" extends="provided"/>
</configurations>
<dependencies>
<dependency org="my.org" name="my-stuff" rev="1.1"/>
</dependencies>
</ivy-module>
现在,如果我尝试检索运行时
配置,而不是获取my stuff
jar、
0.05 my module,我会得到12个jar,包括
和
mail。jar
,当我使用第一个ivy文件进行检索时,我无法获得的内容。为什么我的第二个常春藤文件会将所有内容拉入运行时配置?我到底做错了什么?
另一方面,如果我在第二个文件中添加一个配置映射到依赖项,例如runtime-
我认为您的问题是如何声明已发布工件的配置:
<publications>
<artifact name="my-stuff" type="jar" ext="jar" conf="*"/>
<artifact name="my-stuff" type="source" ext="zip" conf="*"/>
</publications>
您基本上是说它们应该是“运行时”、“提供”和“测试”配置的一部分。此外,由于这3种配置是嵌套的,“运行时”中的某些内容也将自动成为“提供的”和“测试”的一部分。
因此,我建议按如下方式重组您的常春藤文件:
<configurations>
<conf name="default" extends="runtime,master"/>
<conf name="master"/>
<conf name="sources"/>
<conf name="provided"/>
<conf name="runtime"/>
<conf name="test" extends="runtime"/>
</configurations>
<publications>
<artifact name="my-stuff" type="jar" ext="jar" conf="master"/>
<artifact name="my-stuff" type="source" ext="zip" conf="sources"/>
</publications>
笔记:
依赖声明现在应该可以工作了,但提供显式配置映射总是一个好主意,在这种情况下是我们新的“默认”配置:
<dependency org="my.org" name="my-stuff" rev="1.1" conf="runtime->default"/>
希望有人能阐明我一直在研究的问题。我正在将一个小项目从GWT更改为Vaadin,除了Oracle JDBC驱动程序(ojdbc6.jar)之外,我的所有库都在工作。在阅读了周围之后,我发现这个库无法通过公共Maven存储库获得,所以我开始努力从我的本地文件系统将其添加到Ivy中。 这就是问题所在。我已经能够让常春藤解析依赖关系并将其添加到常春藤缓存中,但是它只会将其添加到我的lib / jars文
我已经在build.xml中构建了一个maven项目A,包括使用另一个pom导入所有测试依赖项。当我试图将maven项目A包含到gradle项目B中时,它给出了错误。 我尝试使用[--info]首先尝试正确的存储库URL并更新jar [缓存的资源是最新的]。但最终它会尝试其他人并抛出错误。 如何从gradle构建文件中传递配置文件名? 感谢您的帮助。 项目A- 项目B- 错误消息
Ivy可以解决依赖关系的依赖关系,留档说可以使用模块配置来告诉Ivy配置取决于依赖关系的给定配置。 我想在一个项目中使用htmlunit,在它的sourceforge页面依赖信息中我找到了依赖设置,我把maven规范翻译成ivy: 我写了一个测试,编译了它,当尝试运行它时,我有一个ClassNotFoundException,我再次返回sourceforge,查找关于htmlunit依赖关系的信息
我对ivy没有解析我的一些依赖关系有问题。以下是我如何重现这个问题的: 我在eclipse中有一个空的java项目。我已经在我的项目中添加了ivy.xml: 这工作正常,ivy能够解决和下载口水。 如果我将修订版更改为6.3.0.Final(http://mvnrepository.com/artifact/org.drools/drools-core/6.3.0.Final),它将不起作用,我看
我正在使用文件,告诉sbt 0.13.5从哪个存储库中检索。该文件仅包含和一个存储库,其自定义布局与标准sbt存储库非常相似,并表示和可选字段。 在解决项目的依赖关系时,我注意到了一些奇怪的行为: 解析精确的依赖关系很好 如您所见,请明确提及回购布局模式。 我很困惑,因为解析器可以很好地处理通配符依赖项以外的任何东西。我试着翻遍常春藤文档,想弄清楚某些解析器(比如我使用的解析器)是否没有实现某些类
我遇到了一件奇怪的事。我用常春藤检索标签把罐子放在某处。如果我编写如下代码: 它工作正常。但是如果我添加如下内容: 它会抛出“无法解析依赖关系”。有什么建议吗?谢了。