如何定义jar的ivy配置只包含在编译而非运行时

时间:2013-03-07 21:58:18

标签: java ivy

我在tomcat容器上部署我的应用程序时遇到了一个问题,该容器已经包含servlet-api,我的应用程序也依赖于servlet-api,因为它们会发生冲突。

是否有可能为我的应用程序定义ivy,仅在编译期间包含servlet-api而不是运行时。

如何做到这一点。

dependency org =“java”name =“servlet-api”rev =“default”conf =“compile”

传递conf作为编译失败常春藤验证。

1 个答案:

答案 0 :(得分:3)

听起来像功能上类似于Maven“提供”范围的依赖。

我的建议是创建一个额外的配置和映射,例如:

<configurations>
  <conf name="compile" description="Compile dependencies"/>
  <conf name="runtime" description="Runtime dependencies" extends="compile"/>
  <conf name="provided" description="Provided dependencies"/>
</configurations>

<dependencies>
  <dependency .. conf="compile->default"/>
  <dependency .. conf="runtime->default"/>
  <dependency .. conf="provided->default"/>
</dependencies>

在构建文件中,用于编译的类路径可以包含额外的依赖项,如下所示:

<ivy:cachepath pathid="compile.path" conf="compile,provided"/>