代码之家  ›  专栏  ›  技术社区  ›  LiorH

Eclipse Web项目依赖项

  •  23
  • LiorH  · 技术社区  · 15 年前

    这个问题是关于Eclipse开发的,我正在尝试在Eclipse中创建一个Web应用程序,问题是我没有将依赖项jar获取到部署的归档文件中。

    我创建了一个新的动态Web项目并将它链接到另一个Java项目。Java项目引用了第三方JAR(例如Spring Jar),但是由于某些原因,在发布Web项目时,我只在战争的LIB DIR中获得Java项目JAR,而没有Java项目依赖关系(例如Spring)。

    换句话说,我有一个依赖于项目B(Java Project)的项目A(Web项目),项目B依赖于Spring JAR。当我将Web项目作为一场战争发布到JBoss时,只有项目B打包到JAR中(没有Spring JAR)。

    我知道我可以用蚂蚁做,我甚至有 build.xml 构建整个应用程序,但我认为Eclipse也可以为我执行打包任务。

    我将Java项目添加到Web项目中的JavaEE模块依赖项中。

    我应该在Java项目构建路径属性中使用导出选项吗?是否应该将Java项目的依赖项添加到Web项目中?

    我做错什么了?

    编辑 :我正在使用Eclipse 3.5.1

    6 回复  |  直到 8 年前
        1
  •  48
  •   Rod Lima    13 年前
    1. 转到Web项目属性。
    2. 展开总成(左侧)。
    3. 添加>选择项目>选择您的lib项目>选中“将项目组装到Web应用程序的WEB-INF/lib文件夹”如果未选中>完成。
    4. Java构建路径(左)gt;项目选项卡& gt;>选择您的lib项目>确定
    5. Java构建路径(左)&订单和导出选项卡&选择您的LIB项目。
    6. 保存
    7. 现在它起作用了。
        2
  •  4
  •   nitind    10 年前

    我知道离上一篇文章已经四年了,也许当时还没有这个选项,但我的工作是:

    1. 转到Web项目->属性
    2. 展开装置
    3. 使用“添加”按钮添加项目依赖项
    4. 转到项目->所依赖项目的属性
    5. Deployment Assembly
    6. 使用“添加”按钮添加项目的运行时库依赖项
    7. Web项目->运行方式..->在服务器上运行,它对我有效

    请注意,步骤4-6意味着如果您使用Eclipse构建JAR文件,那么它现在将在该JAR中包含您的依赖库。

    感谢Rodgarcialima帮助我进入第三步。

        3
  •  2
  •   BalusC    15 年前

    我将Java项目添加到Web项目中的JavaEE模块依赖项中。

    如果目的是获取 其他 投影到的运行时类路径中 现在的 项目,那么只有那样做是行不通的。您需要配置 其他 项目到 出口 它的依赖性。它由构建路径属性中的“订单和导出”选项卡完成。希望这有帮助。

        4
  •  2
  •   Stijn de Witt    14 年前

    还要注意EclipseWTP上报告的这个错误,它有时会阻止您的依赖项被部署到WEB-INF/lib,即使您正确配置了一切。叹息。

    Bug 312897 - Deployment feature doesn't deploy classpath dependencies.

    据我所知,要在Eclipse的编译时使用JAR并确保它在AppServer的运行时也可用,您可以:

    • 将jar添加到构建路径中
    • 将JAR标记为导出的EE模块依赖项

    如果您需要另一个正在使用的项目所需要的JAR,我将亲自在构建路径中将它们作为显式依赖项列出,并将它们添加到导出的模块依赖项中。

    但不要把我的答案当真,因为我在寻找我的Eclipse项目中没有发现错误的原因时偶然发现了这篇文章…;)

        5
  •  0
  •   duffymo    15 年前

    在部署Web应用程序之前,您应该将其打包到一个war文件中。必须有一种方法告诉Eclipse您希望它将哪些JAR文件放在WEB-INF/lib目录中。如果没有,请编写一个Ant build.xml来完成它。

    您不应该在您的环境或应用服务器中修改任何类路径变量。正确的方法是创建一个适当的战争文件。

    更新:我重新阅读了你的问题:

    但是由于发布Web项目时的一些原因,我只在JBOSS的LIB DIR中获得Java项目JAR,而没有依赖关系JAR(例如Sun)。

    这是什么意思?您不应该在jboss/lib目录中放置任何内容。一个war文件的全部要点是它是一个自包含的工件,携带着它的所有依赖项。如果你想写东西到jboss/lib目录,那就错了。

    战争文件需要进入您设置的域。无需更改应用服务器。

        6
  •  0
  •   Thorbjørn Ravn Andersen    15 年前

    如果我正确理解您,问题是如果您使用项目A,而项目A又依赖于项目B,那么您不会从项目B得到工件,而是只从项目A得到工件。

    问题是您的项目必须列出它在属性中需要的所有东西-gt;JavaEE模块依赖项,这是一个与通常的项目导出分离的机制。你可能需要做一些实验。