如何在工作区中使用 ivy 和 Resolve 从另一个 Web 项目引用 Web 项目

Posted

技术标签:

【中文标题】如何在工作区中使用 ivy 和 Resolve 从另一个 Web 项目引用 Web 项目【英文标题】:How to reference a web project from another web project with ivy and Resolve in workspace 【发布时间】:2013-06-02 11:52:49 【问题描述】:

我有 2 个网络项目:myLibraryProject 和 myWebProject

myWebProject 依赖于 myLibraryProject,每个都使用 ivy 进行依赖管理:

myLibraryProject ivy.xml:

<ivy-module>
    <info organisation="it.me" module="my-library" />
    <!-- ... configurations and dependencies ... -->
</ivy-module>

myWebProject ivy.xml:

<ivy-module>
    <info organisation="it.me" module="my-web" />
    <!-- ... configurations... -->
    <dependencies>
         <dependency org="it.me" name="my-library" rev="latest.integration" />
    </dependencies>
</ivy-module>

我也在工作区中使用 Resolve(在 eclipse 和 ivyDe 插件中)。

它能够解决依赖关系,但它把 my-library.war 放在了 my-web.war/WEB-INF/lib/

这样 myWebProject 不能使用库,因为它需要一个 jar,而不是战争。

我怎么知道...日食?常春藤?...不是制造战争而是制造罐子?

【问题讨论】:

很难理解您的问题是什么,但我怀疑这与您在 myWebProject build.xml 文件中调用常春藤“检索”任务的方式有关。其次,您是否从 myLibraryProject build.xml 发布了一个 jar?我在 ivy 文件中没有看到“出版物”部分。 我不使用 ant(至少现在不是)。我在 Eclipse 工作区中有两个项目,并告诉常春藤“在工作区中解决”。没有出版物,如果我告诉 ,ivyDe(不是 ivy,eclipse 插件)似乎会忽略它。我也尝试过删除 ivy 依赖项并直接从 eclipse 中添加项目,在 Deployment Assembly 中将扩展名更改为 jar,但这样它只是部署了 WEB-INF/lib/my-library.jar,但内部仍然是一场战争,并且不工作。 Ivy 主要是一个 ANT 插件。听起来像是 Eclipse 插件特有的问题。 【参考方案1】:

我找到了一些东西,不是解决方案,但至少是解释和解决方法。

解释

正如蚂蚁documentation 所说:

请注意,WTP 不支持 IvyDE 的工作区解析器。请参阅专用于WTP integration的页面中的详细信息。

解决方法

我创建了一个普通的 java 项目和一个指向普通项目中 web-project 源文件夹的符号链接 (can be done also on window)。这样 ivyDe 可以在工作区中解析正常项目,并且所有修改仍然在网络项目中“传播”。

不是最好的方法,但至少......希望它可以帮助某人。

【讨论】:

以上是关于如何在工作区中使用 ivy 和 Resolve 从另一个 Web 项目引用 Web 项目的主要内容,如果未能解决你的问题,请参考以下文章

ivy:publish 是如何工作的?

如何使用 ivy 和 nexus 发布 3rdparty 工件

ant编译solr源码生成eclipse项目,解决一直resolve,一直[ivy:retrieve]的问题

如何使用 maven 从 ivy 存储库下载工件

Ivy 无法解决依赖关系,无法找到原因

代理防火墙下的 Jenkins 和 Ivy