我有两个项目,A和B, B是一个web应用程序。项目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目录中填充了spring jar和A.jar。很好,但如果我想"部署"我的webapp,我需要复制这些jar到WEB-INF/lib和A依赖的日志jar。我如何让蚂蚁/常春藤"解决"罐子?
你没有把你依赖的配置放在…
有一种非官方的配置集与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"可以使用它之前,您必须将A的jar发布到Ivy存储库。