动态 WebProject 导入另一个项目和依赖项

Dynamic WebProject import another project and dependencies

我有一个动态 Web 项目,我们将其称为 "project A" 和另一个常规 java 项目,我们将在 Eclipse 中将其称为 "project B"。我通过进入项目属性将项目 b 添加到 B 到项目 A Properties -> Deployment Assembly -> Add -> Project。 这有效并将 jar "project B.jar" 添加到项目 A/WEB-INF/lib 文件夹中。但是 "project B" 上配置的外部 jar 文件不包含在 "project B.jar" 中。另外我去了 project b -> Properties -> Java Build Path -> Order and Export 我已经检查了 "project B" 所有必需的依赖项,但它仍然没有将它们包含在 jar 中。我怎样才能让 Eclipse 将这些罐子包含在 "project B.jar" 文件中。

如果您需要知道我正在使用 eclipse Indigo 而我们没有在这个项目中使用 mavin,我们只需要一个 jar。提前致谢。

您应该将项目 B 转换为分面形式(转到项目属性,"Project Facets" -> "Convert to faceted form...")。唯一需要的方面是 "Java" 和 "Utility Module"。如果我没记错的话,那时 Eclipse 会警告您在项目 A 的运行时可能缺少那些额外的 JAR 依赖项,从而为您提供快速修复选项以将它们添加为依赖项。这将为每个引用的 JAR 文件向项目 B 的 .classpath 文件添加一个 attributes 元素,例如:

<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.2.jar">
   <attributes>
      <attribute name="org.eclipse.jst.component.dependency" value="../"/>
   </attributes>
</classpathentry>

不需要包含的 JAR 将获得此属性:

<attributes>
   <attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>

如果您没有收到上述警告,您可以直接添加 attributes 元素。注意:这都是针对 Eclipse Luna 的,但我知道至少在 Kepler 中它已经像这样工作了。