我有两个项目,A和B,B是一个webapp。项目B依赖于A,因此A的ivy.xml看起来像:
<ivy-module version="2.0">
<info organisation="com.confused" module="B" status="integration"/>
<dependencies>
<!-- confused dependencies -->
<dependency name="A" rev="latest.integration"/>
<!-- 3rd party dependencies -->
<dependency org="org.springframework" name="spring-core" rev="3.2.2.RELEASE"/>
<dependency org="org.springframework" name="spring-jdbc" rev="3.2.2.RELEASE"/>
<dependency org="org.springframework" name="spring-webmvc" rev="3.2.2.RELEASE"/>
</dependencies>
</ivy-module>
类似的东西......我的A模块看起来像:
<ivy-module version="2.0">
<info organisation="com.confused" module="A" status="integration"/>
<dependencies>
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.5"/>
<dependency org="ch.qos.logback" name="logback-classic" rev="1.0.11"/>
<dependency org="ch.qos.logback" name="logback-core" rev="1.0.11"/>
</dependencies>
</ivy-module>
一切都很好......除了:
当我构建B时,lib目录中填充了弹簧罐和A.jar。很好,但如果我想'部署'我的webapp,我需要将这些罐子复制到WEB-INF / lib以及A依赖的日志罐子。我如何让蚂蚁/常春藤'解决'罐子?
答案 0 :(得分:2)
您没有将依赖项所依赖的配置放在......
有一种非官方的配置,与ivy.xml
文件中使用的Maven配置相匹配。这个ivy.template.xml
文件使用它们,我的开发人员可以使用它们来创建ivy.xml
个文件。
您需要做的是映射您的配置。这是A的ivy.xml
文件:
<ivy-module version="2.0">
<info organisation="com.confused" module="A" status="integration"/>
<configurations>
<configuration .../>
<!-- These are the configurations from the ivy.template.xml file -->
</configurations>
<dependencies>
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.5"
conf="compile->default"/>
<dependency org="ch.qos.logback" name="logback-classic" rev="1.0.11"
conf="compile->default"/>
<dependency org="ch.qos.logback" name="logback-core" rev="1.0.11"
conf="compile->default"/>
</dependencies>
</ivy-module>
注意conf
映射! compile->default
表示将其用于编译时和运行时依赖项。通过将其映射到default
,您不仅会下载此特定jar,还会下载所有传递依赖项。
现在,您对{B}的ivy.xml
将如下所示:
<ivy-module version="2.0">
<info organisation="com.confused" module="B" status="integration"/>
<configurations>
<configuration .../>
<!-- These are the configurations from the ivy.template.xml file -->
</configurations>
<dependencies>
<!-- Don't forget the organisation field!-->
<dependency org="com.confused" name="A" rev="latest.integration"
conf="compile->default"/>
<!-- 3rd party dependencies -->
<dependency org="org.springframework" name="spring-core" rev="3.2.2.RELEASE"
conf="compile->default"/>
<dependency org="org.springframework" name="spring-jdbc" rev="3.2.2.RELEASE"
conf="compile->default"/>
<dependency org="org.springframework" name="spring-webmvc" rev="3.2.2.RELEASE"
conf="compile->default"/>
</dependencies>
</ivy-module>
您的项目A的jar及其依赖项只是您的项目“B”所依赖的另一组jar。
当然,在“B”可以使用它之前,你必须publish A罐到你的常春藤存储库。