【问题标题】:Spring Loaded: Integration with Spring MVC maven projectSpring Loaded:与 Spring MVC maven 项目集成
【发布时间】:2014-06-23 23:32:06
【问题描述】:

我今天在 Spring 网站上偶然发现了 Spring Loaded 项目。我正在尝试将其集成到我一直在研究的 Spring MVC(使用 Maven 和 TOMCAT)中。

按照项目页面上的说明,我已经下载了 JAR 文件并在 TOMCAT VM 参数中添加了以下内容(在 Eclipse 中):

-javaagent:C:\Users\xxx\Downloads\springloaded-1.2.0.RELEASE.jar -noverify

我还在 TOMCAT 中禁用了“自动发布”。

现在,一旦我启动 TOMCAT 并对控制器(或任何其他类)进行任何更改,我看不到任何热部署发生。是我出了什么问题还是需要其他配置?

不胜感激。

【问题讨论】:

  • @Ischin,没有错误消息。 TOMCAT 启动干净。
  • 尝试将反斜杠 (\) 更改为正斜杠 (/)
  • Vaibhav,你能做到吗?
  • @IcedD​​ante 不幸的是没有。我花了很多时间在这上面。最后我得到了 JRebel Social。
  • 似乎 spring-loaded 没有提供任何关于如何定义新编译类的位置的文档,因此可以重新加载它们。

标签: spring maven tomcat spring-mvc spring-loaded


【解决方案1】:

本周我尝试 SpringLoaded 在 aptache Tomcat 7 上使用 Petclinic 进行快速演示,但遇到了与此处讨论的相同问题。最后我发现我需要将项目添加到Tomcat类路径中。 因此,就我而言,我在 Eclipse 中打开了 Tomcat“启动配置”,并在类路径选项卡中,将我的项目添加到了“用户条目”组中。这会导致弹簧加载工作正常。

【讨论】:

    【解决方案2】:

    您确实需要在 Tomcat 中“自动发布”,因为更改后的 .class 文件不会复制到 Tomcat 部署应用程序的临时文件夹中。

    例如,在我的本地实例中,临时 Tomcat 部署文件夹是 [WORKSPACE_FOLDER]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps。在这个文件夹中,我复制了我的 Eclipse Web 应用程序资源(类和其他文件),这是 Tomcat 将它们用于部署的地方。 当我更改一个类源代码时,当我的 Eclipse Web 应用程序在 [WORKSPACE_FOLDER]\[MY_WEB_APP_FOLDER]\target 中编译了其 .class 文件时,该类被重新编译并将其 .class 文件放置在 target 文件夹中。启用“自动发布”后,上方 target 文件夹中的 .class 文件将被复制到 wtpwebapps 文件夹中,而禁用该选项则无法复制。

    “自动发布”也不意味着应用程序重新部署在 Tomcat 上,其更新的 .class 文件和其他文件也在 wtpwebapps 文件夹中更新。

    不过,您需要在 Tomcat 中禁用 Web 模块的“自动重新加载”选项。双击在 Eclipse 中创建的 Tomcat 服务器,转到“模块”选项卡,单击您的 Web 应用程序 Web 模块,然后单击“编辑...”并取消选中“启用自动重新加载”。保存并重新启动 Tomcat。

    【讨论】:

    • stackoverflow.com/a/17510281/865403 有更多关于发布和自动重新加载图像的详细信息(有点自我推销:))。
    • 感谢@Andrei 和 Pavel 的详细回复。我禁用了“自动重新加载”并启用了“自动发布”。我什至尝试在 STS 和 TOMCAT 上使用它。这里似乎没有任何效果。
    • 我已经在 STS 和 Tomcat 7 中使用了一个非常简单的 Spring Web 应用程序,并在 @Controller 注释类中更改了代码。
    • 作为我更改 @Controller 代码时发生某些事情的迹象,我在日志中看到了这一点:INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.foo.bar.HomeController.home(java.util.Locale,org.springframework.ui.Model)
    • @Vaibhav 你有没有勾选Build Automatically(菜单Project)?
    【解决方案3】:

    我有一个 spring mvc 项目。我使用 eclipse 编写代码,但不使用它来运行或测试应用程序。使用我的设置进行热部署非常有效。我将给出设置的步骤。

    步骤 #1

    here下载Spring Loaded Jar

    步骤 #2

    编辑您的 maven 批处理/shell 文件并添加这一行

    export MAVEN_OPTS="-javaagent:/path/to/your/jar/springloaded-1.2.1.RELEASE.jar -noverify"
    

    步骤#3

    在eclipse中开启Build Automatically [菜单:Project -> Build Automatically]

    步骤#4

    配置你的 pom 以使用 tomcat 插件

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
          <id>run-embedded</id>
          <goals>
            <goal>run</goal>
          </goals>
       <phase>pre-integration-test</phase>
       <configuration>
        <useSeparateTomcatClassLoader>true</useSeparateTomcatClassLoader>
        <contextFile>${basedir}/tomcat/context.xml</contextFile>
       </configuration>
      </execution>
     </executions>
    </plugin>
    

    步骤#5

    使用mvn tomcat:run 运行您的应用

    【讨论】:

      【解决方案4】:

      如果你想集成 Spring-Loader 你需要添加

      <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <dependencies>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>springloaded</artifactId>
                  <version>1.2.3.RELEASE</version>
              </dependency>
          </dependencies>
      </plugin>
      

      进入 pom.xml

      就是这样。 干杯!!!

      【讨论】:

      【解决方案5】:

      我有一个 spring mvc 项目,tomcat7-maven。我用eclipse写代码。 我将我的项目配置如下:

      步骤#1:pom.xml

      <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <!-- Config: contextPath and Port (Default: / : 8080) -->
          <configuration>
              <path>/</path>
              <port>8080</port>
          </configuration>
      </plugin>
      

      第 2 步

      here下载Spring Loaded Jar:springloaded-1.2.5.RELEASE.jar

      第 3 步

      右键单击您的项目→运行方式→运行配置...→Maven构建→新建→

      标签主界面

      • 名称:您的配置名称
      • 基目录:${workspace_loc:/YourProjectName}
      • 目标:tomcat7:run -X

      标签参数: 在 VM 参数处:-javaagent:path/to/library/springloaded-1.2.5.RELEASE.jar -noverify

      → 运行

      现在您可以修改源代码并立即查看更改。只需在 Web 浏览器中重新加载页面,无需重新构建项目(Eclipse 自动构建)并且必须重新启动 Web 服务器。

      【讨论】:

        猜你喜欢
        • 2013-12-26
        • 1970-01-01
        • 2015-09-09
        • 2012-11-20
        • 2012-11-30
        • 1970-01-01
        • 2012-10-20
        • 2012-08-28
        • 2015-02-27
        相关资源
        最近更新 更多