我有一个网络应用程序,其结构如下:
A.jar -> B.war -> C.war
我正在使用 Eclipse Juno 和WTP版本是1.1。 A.jar 是一个工作区实用程序项目,包含在 B.war 中。 B.war 是一个战争项目,作为覆盖层包含在 C.war 中。那是the way http://maven.apache.org/plugins/maven-war-plugin/overlays.html我正在这样做:
<dependency>
<groupId>com.projects</groupId>
<artifactId>B</artifactId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
之后,我将 C 项目部署到 Tomcat 服务器。如果我手动将 Maven 生成的 war 部署到 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 问题还是我必须以其他方式组织我的项目?
EDITED
我注意到 m2e-wtp 配置存储在 Eclipse 中项目./settings/org.eclipse.wst.common.component文件。这就是我的战争的样子:
<dependent-module deploy-path="/"
handle="module:/overlay/prj/B?includes=**/**&excludes=META-INF/MANIFEST.MF">
<dependency-type>consumes</dependency-type>
</dependent-module>
<dependent-module deploy-path="/"
handle="module:/overlay/slf/?includes=**/**&excludes=META-INF/MANIFEST.MF">
<dependency-type>consumes</dependency-type>
</dependent-module>
正如我所看到的,战争依赖被设置为consume当 jar 依赖项设置为use.
发布的 m2e-wtp 版本 0.17 似乎没有修复它。
已编辑 (2013-08-30)
今天我又回到了同样的问题。即使我安装了 Eclipse keplerWTP 最新稳定版本 http://wiki.eclipse.org/M2E-WTP/New_and_Noteworthy/1.0.0开箱即用,这个问题似乎仍然存在。我以为已经解决了,但是我显然错误地检查了它......