因此,我正在尝试将 Ivy 添加到我的项目中,该项目会输出一个 WAR 文件。一些依赖项,如 RESTEasy 和 Jackson 在 JBoss 运行时可用,所以我不希望它们在我的 war/WEB-INF/lib 文件夹中。其他库不能通过 JBoss 模块使用,所以我想将它们包含在我的项目中。
** 注意:在 Eclipse 中,我使用的是动态 Web 模块方面。这个想法是让 IvyDE 将所需的运行时依赖项复制到 war/WEB-INF/lib 中。
最初我创建了 2 个常春藤配置文件:
- ivy.xml - 运行时(不包括在 WAR 中)
- ivy_web.xml - 包含在战争中
然后我使用 GUI 来配置与 Ant 检索任务等效的 IDE。因此,在我不想在 IDE 中使用的 ANT 构建文件中,我有以下内容:
<ivy:retrieve pattern="war/WEB-INF/lib/[artifact]-[revision].[ext]" file="ivy-web.xml" type="jar" />
<ivy:retrieve pattern="lib/[artifact]-[revision].[ext]" file="ivy.xml" type="jar" />
- 图片还不允许:-(
我在另一篇评论中注意到(在 Eclipse 中映射多个常春藤文件)他们提到只使用 1 个 ivy.xml - 但我不太确定如何到达那里?
哦,我也注意到了这一点: IvyDE + WTP:如何解决 ivy 库被 WTP 忽略的问题?- 但是我的项目没有使用正确的方面,我宁愿不添加它们。
因此,在阅读了这篇(https://stackoverflow.com/a/16575318/880884)帖子后,我在我的项目中添加了编译和运行时配置。它看起来像这样:
<configurations>
<conf name="compile" description="used for building"/>
<conf name="runtime" description="used for running"/>
</configurations>
<dependencies>
<!-- compile -->
<dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="1.9.2" conf="compile->default"/>
<dependency org="org.codehaus.jackson" name="jackson-xc" rev="1.9.2" conf="compile->default"/>
<dependency org="org.codehaus.jackson" name="jackson-jaxrs" rev="1.9.2" conf="compile->default"/>
<!-- runtime -->
<dependency org="com.google.guava" name="guava" rev="14.0.1" conf="runtime->default"/>
<dependency org="com.google.inject" name="guice" rev="3.0" conf="runtime->default"/>
<dependency org="aopalliance" name="aopalliance" rev="1.0" conf="runtime->default"/>
<dependency org="javax.inject" name="javax.inject" rev="1" conf="runtime->default"/>
</dependencies>
同样,我尝试只添加一个 ivy.xml。接下来我进入项目属性 > Ivy > 检索列表 > 添加 - 添加了 2 个不同的配置,一个用于编译,映射到 /lib。另一个使用“运行时”配置并为检索模式指定“war/WEB-INF/lib/[artifact]-[revision].[ext]”。
然而,我最终在我的 war/WEB-INF/lib/ 中得到了“编译”,这不是我想要的。我只希望将运行时依赖项复制到那里。