当前位置: 首页 > 知识库问答 >
问题:

ApacheIvy:使用模式解决依赖关系

郝昊东
2023-03-14

我想下载使用ivy的工件:解决,但使用使用[conf]属性的模式。所以我在IvyS中定义了以下内容ettings.xml

<caches defaultCacheDir="${env.IvyLib}\cache" artifactPattern="[conf]\[artifact].[ext]" checkUpToDate="false" />

注意这个模式

artifactPattern="[conf]\[artifact].[ext]"
<configurations>
    <conf name="ConfGroup1" description="First group of dependencies"/>
    <conf name="ConfGroup2" description="Second group of dependencies"/>
</configurations>
<dependencies>
    <dependency org="derby-db" name="derby-db" rev="10.2.2.0" conf="ConfGroup1->default">
        <artifact name="derby-db" type="zip" ext="zip" />
    </dependency>
    <dependency org="derby-db" name="derby-db" rev="10.4.1.3" conf="ConfGroup2->default">
        <artifact name="derby-db" type="zip" ext="zip" />
    </dependency>
</dependencies>

现在可以很好地解决依赖关系,但只为配置创建了一个文件夹:默认。没有为ConfGroup1创建文件夹

另外,我知道这可以通过使用ivy:retrieve实现,但我不想使用它,因为它将涉及将工件从ivy缓存复制到ivy:resolve之后的另一个地方,我有价值数十亿字节的工件。单独复制它们将在构建过程中产生额外的开销,由于项目需求,我无法承担。

共有1个答案

虞正业
2023-03-14

常春藤检索任务有一个符号链接选项,可以用来节省空间。

├── build.xml
├── ivysettings.xml
├── ivy.xml
└── target
    ├── ivy-reports
    │   ├── ivy-report.css
    │   ├── myorg-mymod-ConfGroup1.html
    │   └── myorg-mymod-ConfGroup2.html
    └── lib
        ├── ConfGroup1
        │   └── db-derby-10.12.1.1.zip -> /home/mark/.ivy2/cache/db-derby/db-derby/zips/db-derby-10.12.1.1.zip
        └── ConfGroup2
            └── db-derby-10.11.1.1.zip -> /home/mark/.ivy2/cache/db-derby/db-derby/zips/db-derby-10.11.1.1.zip
<project name="demo" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">

    <property name="build.dir" location="target"/>

    <target name="resolve">
        <ivy:resolve/>

        <ivy:report todir='${build.dir}/ivy-reports' graph='false' xml='false'/>

        <ivy:retrieve pattern='${build.dir}/lib/[conf]/[module]-[revision].[ext]' symlink="true"/>
    </target>

</project>
<ivy-module version="2.0">
  <info organisation="myorg" module="mymod"/>

  <configurations>
    <conf name="ConfGroup1" description="First group of dependencies"/>
    <conf name="ConfGroup2" description="Second group of dependencies"/>
  </configurations>
  <dependencies>
    <dependency org="db-derby" name="db-derby" rev="10.12.1.1" conf="ConfGroup1->default">
        <artifact name="db-derby" type="zip" ext="zip" />
    </dependency>
    <dependency org="db-derby" name="db-derby" rev="10.11.1.1" conf="ConfGroup2->default">
        <artifact name="db-derby" type="zip" ext="zip" />
    </dependency>
  </dependencies>

</ivy-module>
<ivysettings>
  <settings defaultResolver="central"/>
  <resolvers>
    <ibiblio name="central" m2compatible="true" />
    <url name="db-derby">
      <artifact pattern="http://ftp.heanet.ie/mirrors/www.apache.org/dist//db/derby/[module]-[revision]/[module]-[revision]-bin.[ext]"/>
    </url>
  </resolvers>
  <modules>
    <module organisation="db-derby" resolver="db-derby" />
  </modules>
</ivysettings>
 类似资料:
  • 我对ivy没有解析我的一些依赖关系有问题。以下是我如何重现这个问题的: 我在eclipse中有一个空的java项目。我已经在我的项目中添加了ivy.xml: 这工作正常,ivy能够解决和下载口水。 如果我将修订版更改为6.3.0.Final(http://mvnrepository.com/artifact/org.drools/drools-core/6.3.0.Final),它将不起作用,我看

  • 谁能告诉我Maven中的依赖项Hamcrest有什么问题吗?这是一个遗憾,但我不能在这里附上截图。 当我试图更新Maven索引时,什么也没有发生。

  • 我试图修改我们现有的CDI扩展,它创建自己的代理bean。现在只有一个为每个服务创建的代理。服务有类似于应用程序范围的东西,所以服务总是只有一个实例。 我想要完成的是为每个注入点创建一个代理bean。我需要它们来存储特定于给定注射点的一些信息。如果同一个服务有更多的注入点,那么将有更多的代理bean,但它们后面仍然有一个服务实例。但是,当我以这种方式更改行为时,Weld会抱怨不明确的依赖关系,因为

  • 我有一个多模块Maven项目,其中包含子模块ModuleA和ModuleB等。ModuleA将ModuleB列为依赖项。但是,当仅构建模块A时,Maven不会解决模块B的依赖关系-导致。我想避免构建整个父级以使构建更快。目前我发现让它工作的唯一方法是使用exec插件和脚本,将父项目称为“ModuleB, ModuleA”,这意味着我必须在每次依赖项更改时更改脚本(例如添加ModuleC)。 是否有

  • 我试图构建一个具有spark依赖关系的非常基本的scala脚本。但我不能用它做罐子。 我的scala源代码在: /exampleapp/main/scala/example/hello.scala 项目名为exampleapp。

  • 很高兴有一个更新的Android Studio 3.0。但是我在Android Studio 3.0中遇到了一个问题,我刚刚在Android Studio 3.0中创建了一个新项目。然后我犯了一些错误 我通过将依赖项更改为最新版本并解决问题来解决这些问题。 但是,当我添加了facebook帐户工具包sdk的依赖项时。脸谱网。android:帐户工具包sdk:4 我收到以下错误-: 错误:无法解析“