繁体   English   中英

如何将maven托管依赖项复制到war \ web-inf \ lib中,以便在Eclipse中以调试模式运行我的GWT 2.0应用程序?

[英]How do I get maven managed dependencies copied into war\web-inf\lib so I can run my GWT 2.0 app in debug mode within Eclipse?

我正在将现有项目从GWT 1.5.2更新为GWT 2.0.0。 我们使用maven 2来管理我们的依赖项,并在Eclipse 3.5中完成所有开发。

因为我们使用maven来管理我们的依赖项,所以我没有像warT指定的那样在war \\ web-inf \\ lib目录中拥有所有这些jar。 相反,它们位于maven存储库中,就像maven喜欢它们一样。 我已经设置了项目,以便maven可以在开发或Web模式下成功构建和启动,并且应用程序可以正常运行。

问题是当我从Eclipse启动时,我得到一个java.lang.NoClassDefFoundError。 如果我在启动之前手动将我的依赖项复制到war \\ web-inf \\ lib中,一切运行正常,但这并不适合长期解决方案。 首先,如果我将所有这些jar检查到我们的版本控制中,那将破坏我们从maven获得的大部分值。 像maven一样恼人,抛弃它不是答案。 其次,让开发人员在每次调试时手动复制它们都是荒谬的。

那么我可以让Eclipse在启动之前将依赖项复制到war \\ web-inf \\ lib中吗? 有没有我想念的替代解决方案?

谢谢,

托尼

运行gwt:eclipse目标会将maven依赖项复制到war/WEB-INF/lib 有关更多详细信息,请参阅Maven GWT插件Eclipse IDE Integration文档的Eclipse Configuration部分。 另请参阅有关Maven GWT 2.0和Eclipse的 答案

您应该安装m2eclipse插件并使用它在eclipse中构建项目。 这将从eclipse中调用maven作为外部工具。

您的maven项目工件类型应该设置为war,这将让maven发现依赖项并将它们捆绑在一起。

看到这些链接:

强制Maven2将依赖项复制到target / lib中

http://maven.apache.org/plugins/maven-war-plugin/

http://maven.apache.org/plugins/maven-war-plugin/examples/rapid-testing-jetty6-plugin.html

一个maven感知的IDE(想法,eclipse,netbeans)应该自动进行这种打包。 可能是你:

  • 忘了在IDE中启用maven导入?
  • 没有将这些依赖项添加到pom.xml(因此它们不包含在'mvn包'阶段)
  • 为依赖声明添加了错误的范围(例如,范围'提供'或'测试'),因此它们在运行时被忽略

如果你的pom.xml中的打包方法设置为war,它应该将运行时depres复制到target / war / WEB-INF / lib中。

或者你的项目是建造像耳朵更大的东西? 如果是这样,您应该将pom.xml拆分为多项目格式。

至于Eclipse,我对它并不十分熟悉,所以我无法真正帮助你。 当你进行运行或调试时,你(或者你可以)运行maven目标(比如“安装”)吗?

这不应该是一个问题。 如果您使用的是Eclipse + WTP,那么WTP允许您在项目的属性中声明“J2EE模块依赖项”下列出的jar。 这些jar会自动发布到tomcat(请参阅本评论末尾的注释)您需要在eclipse环境中声明一个M2_REPO变量(搜索eclipse帮助以获取'classpath变量'),它应该指向您的本地maven存储库,并且只是将外部jar从那里添加到项目中并将其标记为“J2EE依赖项”。 我做了很多项目,Maven和Eclipse并排:)(没有m2eclipse)

第二种选择是尝试将Eclipse和Maven与m2eclipse插件集成,如提到的那样,但我发现这是不必要的。

如果您不使用WTP,则有第三种选择(但您应该)。 假设您使用tomcat,那么您可以将这些jar复制到$(tomcat.home)/ common / lib。 如果你只能为你的tomcat私有实例(在每个开发人员的机器上)做到这一点,那么你很高兴。 这应该是一个影响较小的解决方案,它将在运行时将这些jar放入类路径中,但它不能很好地扩展。

注意:遗憾的是,Eclipse Web项目的类路径可能会令人困惑。 将jar添加到项目的常规构建路径时,它们不会部署(复制)到tomcat。 为了解决这个问题,WTP定义了一个名为Webapp Library的特殊库 - 该库包含项目WEB-INF / lib文件夹中的所有jar,以及标记为J2EE Module Dependencies的所有外部jar。 当发布到tomcat时,所有这些jar都适当地找到了WEB-INF / lib的方式。

非常简单:1。在您的项目下创建一个“lib”文件夹,如下所示:“\\ src \\ main \\ webapp \\ WEB-INF \\ lib”2。复制您希望包含在WAR包文件夹中的所需“jars”等。 3.像往常一样调用maven构建。 我使用“mvn install”,它创建了war文件。

如果您检查WAR文件,那么您在步骤1和步骤2中包含的罐子就在那里。

干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM