Ant、ivy、多个项目和可传递的依赖项



我有两个项目,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存储库。

相关内容

  • 没有找到相关文章

最新更新