我想试试Spring Source的“Spring Loaded”类重载代理,Tomcat通过IntelliJ运行。
https://github.com/SpringSource/spring-loaded
我已经将JVM参数添加到我的Tomcat运行配置中,并且我的webapp启动时没有错误,似乎表现正常。
我不确定如何触发类重新加载。我只需要编译我修改的类吗?我试过了,但似乎没有用。我是否需要更新Tomcat并部署类和资源?这似乎也不起作用......?
非常感谢任何具体的配置细节。
编辑:更多信息,我认为我的问题可能与使用两个模块有关,一个是核心代码库,另一个是webapp。我使用Maven,一个配置为jar项目,另一个配置为war项目。 IntelliJ为爆炸的战争设置了神器,以使用jar模块的jar文件。我已经尝试切换Artifact配置,将jar模块的编译输出合并到WEB-INF / classes中。现在我在target / webapp / WEB-INF / class / etc中看到.class文件。但我不确定如何在编辑时让IntelliJ更新特定的类文件。
答案 0 :(得分:5)
如果您将以下jvm参数(如Springloaded页面所述)添加到tomcat
-javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify SomeJavaClass
你应该没事的。对于您正在测试的webapp,在tomcat中禁用自动重新加载可能会有所帮助。对于server.xml中的例子:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="projekt" path="/projekt" reloadable="false" ...
这确保只有springloaded类加载器加载更改的类。
答案 1 :(得分:0)
将Web片段输出放入webapp / WEB-INF / classes
弹簧加载仅支撑弹簧4.1 https://github.com/spring-projects/spring-loaded/issues/139