ivy + eclipse 运行时依赖部署

Posted

技术标签:

【中文标题】ivy + eclipse 运行时依赖部署【英文标题】:Ivy + eclipse runtime dependencies deployment 【发布时间】:2014-05-13 09:36:44 【问题描述】:

我有一个带有 IvyDE 托管依赖项的 eclipse 项目

我的 IvyDE 是这样的:

<ivy-module version="2.0" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
     <info organisation="R01"
           module="myModule"
           status="integration">
     </info>

     <configurations>
         <conf name="compile" description="Used only at compile time; not deployed to the server" />
         <conf name="runtime" extends="compile" description="Deployed to the server"/>
     </configurations>

     <dependencies>
         <dependency org="com.sun.jersey" name="jersey-core" rev="1.9.1" conf="runtime"/>            
         <dependency org="javax.ws.rs" name="jsr311-api" rev="1.1.1" conf="compile"/>
     </dependencies>
</ivy-module>

我有编译时需要的依赖项和运行时需要的依赖项

我不知道这是否可以在 eclipse (IvyDE) 中使用 apache IVY,但我只想将 RUNTIME 依赖项部署到服务器。

现在我找到的唯一解决方案是:

设置 IvyDE 以解析所有(编译 + 运行时)依赖项并设置模块类路径 将 [Ivy] 库添加到项目属性的 [DeploymentAssembly] 中

这样所有依赖项(包括编译时依赖项)都部署到服务器上...

有什么办法可以做到吗???

提前致谢

【问题讨论】:

【参考方案1】:

我回答我自己的问题。

最后我设法获得了两个不同的 ivy 管理的类路径库,一个在编译时使用,另一个在运行时使用

诀窍是包含两个 ivyDE 管理的依赖项:

一个 ivyDE 托管依赖项应该用于 COMPILE 配置,另一个用于 RUNTIME 配置:

(重复 RUNTIME 配置)

那么这只是设置的问题:

COMPILE 配置的 ivy 依赖项应该是 [项目库] RUNTIME 配置的 ivy 依赖项应位于 [部署程序集]

就是这样!

【讨论】:

+1 让我开心。我遇到了完全相同的问题,让 Ivy-classpath-container 将运行时库(在本例中为 websocket-api)部署到 tomcat 部署文件夹。将这两种配置分成两个不同的 ivy 类路径条目解决了这个问题。感谢@futuretelematics 提议。

以上是关于ivy + eclipse 运行时依赖部署的主要内容,如果未能解决你的问题,请参考以下文章

Intellij 在运行 Ivy Project 时无法找到类

如何运行 gradle

在 WAR 文件中排除 Ivy 依赖项

如何在eclipse中使用Ivy + IvyDE将不同的jar放到lib和web-inf/lib中

提供的 Ivy 依赖项

Grails 依赖项生成失败(ivy,Windows 7)