【问题标题】:spring-web maven dependency not being published with eclipsespring-web maven 依赖项未随 Eclipse 发布
【发布时间】:2013-02-16 23:02:35
【问题描述】:

我的 gae + spring + maven 项目完美运行。但我无法使用 eclipse 使其工作。

似乎在我的 pom.xml 中声明的 spring-web 依赖项正在从 WEB-INF/lib 中消失 em> 当我使用 eclipse 中的 GAE 运行我的项目时(使用 Google 插件,Run As > Web Application)。所以没有 spring-web 这是一个例外:

Could not instantiate listener org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

(完整的 GAE 堆栈跟踪 here

从控制台,运行mvn clean package gae:run,应用程序运行起来就像一个魅力,spring-web按预期放置在WEB-INF/lib目录下。

刚刚在 BitBucket 上发布了我的测试项目:https://bitbucket.org/jelies/gae-spring-maven

知道从 Eclipse 启动 webapp 时为什么 spring-web 没有发布到 WEB-INF/lib 吗?


使用:

  • SpringSource ToolSuite 3.1.0(基于 eclipse 3.8)
  • Java 6
  • 春季 3.2.1
  • Maven 3.0.4
  • 谷歌应用引擎 1.7.5
  • maven-gae-plugin 0.9.6

更新: spring-web 依赖被发布到 WEB-INF/lib,当使用 spring 版本 3.1.4 时。释放。任何 3.2.X 版本都不会发生这种情况。

【问题讨论】:

    标签: eclipse spring google-app-engine maven spring-mvc


    【解决方案1】:

    当然,带有 eclipse 和 maven 的 spring 3.2.x 不工作;从 Google Eclipse 插件启动应用程序时,spring-web 未发布到 WEB-INF/lib

    使用 Spring 3.2.1 和 3.2.2 进行了尝试。它只适用于使用较低版本的我(现在我使用的是 3.1.4)。

    【讨论】:

      【解决方案2】:

      为我的配置(Eclipse 4.2、WAS 7.0、mvn 3)添加了一个 Jira 问题:https://jira.springsource.org/browse/SPR-10494

      【讨论】:

        【解决方案3】:

        如果您的 .classpath 文件具有条目 <classpathentry kind="output" path="target/classes"/>,请尝试将其更改为您的 WEB-INF/classes 目录。我的设置是 maven 标准,所以我把这条线改成了<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>。这刚刚解决了我的问题(Eclipse Juno,WAS 7,没有安装 m2e)。

        另外,如果它适用于其他人,我应该提到我的服务器(Websphere)我选择“使用工作区中的资源运行服务器”发布设置。

        这个问题表明我真的不了解 Eclipse 的发布,但在此之前,当我选择“工作区中”设置时,它实际上将我的资源发布到 \workspace.metadata.plugins\org.eclipse.wst。 server.core\tmp0 和 WEB-INF\lib 不包含 spring-web。但是,通过上述更改,我不再看到我的代码发布到该目录。我现在不确定我的服务器如何获取所需的二进制文件,但它似乎正在工作。

        作为旁注/额外的好处(可能完全不相关),当我对 JSP 进行更改时,我不再需要发布来查看它们的更新。

        【讨论】:

          【解决方案4】:

          这为我解决了问题:

          1. 找到包含在您的 Web 应用程序中的 spring-web.jar 的位置。在我的情况下,它在 user.m2\repository\org\springframework\spring-web\4.1.6.RELEASE\spring-web-4.1.6.RELEASE.jar
          2. 打开 spring-web-4.1.6.RELEASE.jar en 例如。 7zip
          3. 从 jar 中删除此文件:META-INF\web-fragment.xml(在 7zip 中右键单击该文件 -> 删除)
          4. 关闭 7zip 并在 Eclipse 中的服务器上运行“发布”

          更多信息:https://jira.spring.io/browse/SPR-10494?focusedCommentId=94572&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-94572

          【讨论】:

            猜你喜欢
            • 2012-03-21
            • 1970-01-01
            • 2016-05-16
            • 2020-10-08
            • 1970-01-01
            • 1970-01-01
            • 2017-06-25
            • 2012-11-12
            • 2015-02-28
            相关资源
            最近更新 更多