【问题标题】:WTP - m2e not deploying transitive dependenciesWTP - m2e 不部署传递依赖项
【发布时间】:2013-01-21 14:10:12
【问题描述】:

我有一个这样构造的网络应用程序:

A.jar -> B.war -> C.war

我使用的是 Eclipse Juno,WTP 版本是 1.1。 A.jar 是 B.war 包含的工作空间实用程序项目。 B.war 是 C.war 作为覆盖包含的战争项目。那是the way 我正在这样做:

<dependency>
    <groupId>com.projects</groupId>
    <artifactId>B</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>war</type>
    <scope>runtime</scope>
</dependency>

之后,我将 C 项目部署到 Tomcat 服务器。如果我手动将 Maven 生成的战争部署到 Tomcat,这就像一个魅力,因为 A.jar 包含在 WEB-INF/lib 中。但是,当我让 m2e-wtp 进行部署时,我的问题就来了,因为它正确地进行了覆盖,但不包括 A 传递依赖。我尝试将它作为一个 pom 包含在内,因为我在这里的某个地方读到了,但我得到了相同的结果。

<dependency>
    <groupId>com.projects</groupId>
    <artifactId>B</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>war</type>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.projects</groupId>
    <artifactId>B</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>pom</type>
</dependency>

我正在使用最新版本的 m2e (1.2) 和 m2e-wtp (0.16) 并使用 Maven 配置更新我的项目。

这是 m2e-wtp 问题还是我必须以其他方式组织我的项目?


已编辑

我注意到 m2e-wtp 配置存储在 Eclipse 的 project./settings/org.eclipse.wst.common.component 文件中。这就是我的战争的样子:

<dependent-module deploy-path="/"
    handle="module:/overlay/prj/B?includes=**/**&amp;excludes=META-INF/MANIFEST.MF">
    <dependency-type>consumes</dependency-type>
</dependent-module>
<dependent-module deploy-path="/"
    handle="module:/overlay/slf/?includes=**/**&amp;excludes=META-INF/MANIFEST.MF">
    <dependency-type>consumes</dependency-type>
</dependent-module>

正如我所见,war 依赖项设置为 consume,而 jar 依赖项设置为 use

发布的 m2e-wtp 0.17 版似乎没有修复它。


已编辑 (2013-08-30)

今天我又回到了同样的问题。即使我安装了开箱即用的latest stable release of WTP Eclipse 开普勒,这个问题似乎仍然存在。我以为它已经解决了,但我显然错误地检查了它......

【问题讨论】:

  • 是的。仍然看到 m2e-wtp 的问题 - WTP(孵化)版本 0.17.0.20130212 的 Maven 集成。

标签: eclipse maven m2e eclipse-wtp


【解决方案1】:

我认为这不是您的项目组织的问题。您的问题与这个 m2e-wtp bug report 非常相似。

【讨论】:

  • 我期待着另一种回应,但我想是插件的错误。由于链接到它,你应该得到赏金。
  • bug 已于 2015-03-05 15 修复。我测试了来自 download.eclipse.org/m2e-wtp/snapshots/mars 的快照 m2e-wtp
【解决方案2】:

这似乎是 Eclipse Juno 和 WTP 插件的问题。

我遇到了同样的问题,我是这样解决的:

  1. 备份 Eclipse 工作区和项目代码
  2. 从 Eclipse 中删除您的项目(不删除内容)
  3. 打开命令终端 (cmd)
  4. 运行 mvn eclipse:clean
  5. 运行mvn eclipse:eclipse -Dwtpversion=2.0
  6. 使用文本编辑器编辑 Eclipse 类路径文件:%PROJECT_PATH%\.classpath
  7. .classpath 文件中删除所有具有 kind="var" 属性的行。例如:

  8. 保存文件并关闭编辑器。
  9. 在eclipse中,点击:file->Import...->Maven->import现有的maven项目,再次导入你的项目
  10. Maven -> 更新项目(如果需要)
您可以在 eclipse 项目属性中的 deployment assembly 中看到问题已解决,并且存在 maven 依赖项。

希望这会有所帮助。

【讨论】:

  • 仍然必须尝试您的解决方案,我所做的只是根据配置文件包含传递依赖项。无论如何,非常感谢。
【解决方案3】:

我也有这个问题。我有一个丑陋的解决方法:

all 原始战争的依赖项放在一个单独的项目(jar 类型)中,并使原始战争和覆盖战争都依赖于它。所以举个例子:

A.jar -> B.war -> C.war

变成

A.jar -> B-dependencies.jar(创建名为 B-dependencies 的新模块)

B-dependencies.jar -> B.war

B-dependencies.jar -> C.war

请注意,它并非特定于 Tomcat;我正在使用 JBoss。

【讨论】:

  • 是的,这正是我所做的。此外,我根据配置文件包含 B-dependencies.jar(我将它与 eclipse 配置文件一起使用,而不是与生产配置文件一起使用,因为问题与 eclipse 有关)。我更改了问题标题以将其与 Tomcat 无关;-)
  • m2e-wtp 创始人有a similar solution,这对我不起作用。在 1.0.1 还没有完全解决。
猜你喜欢
  • 2013-01-02
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 2017-04-05
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多