Web applications ant、ivy、多个项目和可传递依赖项

Web applications ant、ivy、多个项目和可传递依赖项,web-applications,ant,ivy,Web Applications,Ant,Ivy,我有两个项目,A和B,B是一个网络应用。项目B依赖于A,因此A的ivy.xml类似于: <ivy-module version="2.0"> <info organisation="com.confused" module="B" status="integration"/> <dependencies> <!-- confused dependencies --> <dependency name="A"

我有两个项目,A和B,B是一个网络应用。项目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目录中填充了springjar和A.jar。很好,但是如果我想“部署”我的webapp,我需要将这些jar复制到WEB-INF/lib以及A所依赖的日志jar中。如何让ant/ivy也“解析”JAR?

您没有将依赖项所依赖的配置放在一起

有一组非官方的配置与
ivy.xml
文件中使用的Maven配置相匹配。这个文件使用它们,我的开发人员可以将它们作为
ivy.xml
文件的基础

您需要做的是映射您的配置。下面是一个名为
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>
项目A的jar及其依赖项只是项目“B”依赖的另一组jar


当然,在“B”可以使用之前,您必须先将A的jar存储到您的常春藤存储库中。

是的,我是这方面的新手,不完全了解配置。我还是不知道,但我现在要去弄清楚!不过,我想出来的足以证明你是对的,非常感谢!配置是对依赖项进行分组的一种方法。例如,标准是具有“编译”配置、“测试”配置和“运行时”配置。您可以使用
创建类路径。
a->b
映射是影响行为的一种方式,我拥有的标准配置与Maven的配置相匹配。
<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>