在 WAR 文件中排除 Ivy 依赖项
Posted
技术标签:
【中文标题】在 WAR 文件中排除 Ivy 依赖项【英文标题】:Exclude Ivy Dependencies in WAR File 【发布时间】:2014-06-06 03:26:22 【问题描述】:我使用 Eclipse 和 Ivy 插件 IvyDE。
我目前使用 Eclipse 的导出到 WAR 功能创建一个 WAR 文件。我不使用 ANT 构建文件——我让 Eclipse 处理它。
当我导出到 war 时,ivy.xml 文件中的所有依赖项都会被复制到 war 文件的 bin 目录中。我想排除其中一个(或多个)。我怎么做?
完成此任务的最简单方法是什么?如果可能的话,我想避免创建自己的 ANT 构建文件并继续使用 Eclipse 的导出工具和 IvyDE 插件。
【问题讨论】:
Ivy 主要设计为用作 ANT 插件。我不使用 Eclipse,所以假设 ivy 用于填充它的类路径,显然无论配置如何都拉入所有 jar。这个逻辑可以很好地支持 Eclipse 编译,但在您的用例下肯定会崩溃。也许对 Eclipse 插件有更多了解的人可以发表评论? 我会重新考虑不使用 Java 构建工具。如果您共享您的代码,您将迫使其他人使用 Eclipse 构建它。第二个考虑因素是 CI。让 Jenkins 运行 Eclipse 构建会很痛苦。如果您不喜欢 ANT(很多人不喜欢),还有其他选择,例如 Maven 或 Gradle。只是一个建议,并不意味着要开始一场火焰战争:-) 谢谢。你说的有道理。在我对构建和部署代码的方式进行重大更改之前,让我拭目以待,看看是否有人可以建议一种快速方法来完成我需要的工作,只需使用 Eclipse 和 IvyDE。这样,我就有更多时间考虑您提到的替代方案。 【参考方案1】:对我来说,以下方法成功了:
将 ivy.xml 复制到例如常春藤节点部署.xml 在 ivy.xml 中创建/选择要包含在部署程序集中的配置 在 ivy-nodeploy.xml 中创建/选择您不想包含在部署程序集中的配置 将新的 ivy-library 添加到构建路径中,在其中将默认 ivy-filename 更改为 ivy-nodeploy.xml这样,您在编译时仍然在构建路径中拥有所有 ivy 托管库,但只有在 ivy.xml 中配置的库才会包含在 war 文件中。
【讨论】:
【参考方案2】:右键单击您项目的ivy.xml
,然后选择“添加常春藤库”。
在主选项卡中是构建配置的自定义设置,看起来你可以选择你想要的conf
(即设置为runtime
)。我使用 Ant 进行战争,所以我从未尝试过。我想这会实现你想要的。
【讨论】:
以上是关于在 WAR 文件中排除 Ivy 依赖项的主要内容,如果未能解决你的问题,请参考以下文章