Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在tomcat上运行Java web应用程序而无需war_Java_Maven_Tomcat - Fatal编程技术网

在tomcat上运行Java web应用程序而无需war

在tomcat上运行Java web应用程序而无需war,java,maven,tomcat,Java,Maven,Tomcat,我被指派在Spring/Hibernate上构建Java web应用程序,前端使用Wicket,依赖关系管理使用maven,运行在Tomcat服务器上 使用netbeans,每当我对代码进行更改时,我点击run,IDE就会继续重建项目,将代码编译成类文件,然后将其打包成.war文件,据我所知,该文件只是一个常规归档文件,没有什么特别之处 但构建所有东西都需要10分钟,即使只是对wicket或hibernate之类的东西做了一个小小的更改,而且效率很低 在部署过程中,最大的瓶颈是 将文件从src文

我被指派在Spring/Hibernate上构建Java web应用程序,前端使用Wicket,依赖关系管理使用maven,运行在Tomcat服务器上

使用netbeans,每当我对代码进行更改时,我点击run,IDE就会继续重建项目,将代码编译成类文件,然后将其打包成
.war
文件,据我所知,该文件只是一个常规归档文件,没有什么特别之处

但构建所有东西都需要10分钟,即使只是对wicket或hibernate之类的东西做了一个小小的更改,而且效率很低

在部署过程中,最大的瓶颈是

  • 将文件从src文件夹复制到目标文件夹
  • 把一切都打包成战争档案
  • 将其部署到tomcat

  • 如何加快开发过程?虽然与其他一些应用程序相比,每次构建10分钟可能相对较少,但对我来说,浪费的时间仍然是浪费的时间。

    您至少有两种可能性:

    1) 使用JRebel:


    2) 进入Tomcat的应用程序文件夹:在那里你可以找到包含war文件解压缩内容的文件夹,只要复制粘贴到那里(在正确的位置)JSP就可以了,如果你对JSP做了更改,或者复制你更改过的类的.class文件。。。在大多数情况下,不需要重新启动Tomcat。

    这里至少有两种可能性:

    1) 使用JRebel:


    2) 进入Tomcat的应用程序文件夹:在那里你可以找到包含war文件解压缩内容的文件夹,只要复制粘贴到那里(在正确的位置)JSP就可以了,如果你对JSP做了更改,或者复制你更改过的类的.class文件。。。在大多数情况下,不需要重新启动Tomcat。

    我使用Eclipse进行开发。但我相信这两个IDE的选择是相似的

    由于您正在使用maven,所以运行maven的默认目标是“mvn包”,它清理目标目录,创建类文件,运行单元测试,准备war文件,并在tomcat中部署

    现在,您应该使用New->server添加一个运行时服务器,比如tomcat。在项目中使用runas->runonserver,并提供tomcat服务器作为运行时。下次更改代码时,只要tomcat还在运行,更新的类就会被热部署。因此,您只能在开发过程中测试代码。
    当您只想创建war时,请使用mvn包来创建war文件。

    我使用Eclipse进行开发。但我相信这两个IDE的选择是相似的

    由于您正在使用maven,所以运行maven的默认目标是“mvn包”,它清理目标目录,创建类文件,运行单元测试,准备war文件,并在tomcat中部署

    现在,您应该使用New->server添加一个运行时服务器,比如tomcat。在项目中使用runas->runonserver,并提供tomcat服务器作为运行时。下次更改代码时,只要tomcat还在运行,更新的类就会被热部署。因此,您只能在开发过程中测试代码。
    如果只想创建war,请使用mvn包创建war文件。

    这里有一个更好的建议:使用。您可以在JVM上以可执行JAR的形式运行应用程序,而无需servlet引擎或JavaEE应用程序服务器。

    这里有一个更好的建议:使用。您可以在JVM上以可执行JAR的形式运行应用程序,而无需servlet引擎或Java EE应用程序服务器。

    我理解您的沮丧。我已经经历过了。我的重新部署周期是20分钟,我的意思是停止Tomcat,重新复制WAR和JAR,然后重新启动服务器

    随着时间的推移,我们重构了我们的代码库,使每一项功能(或web资源)都成为一场战争,我们从一场无所不能的战争变成了大约100场每一项都有一个关注点的战争。如果战争之间有一些共享模块,我们将模块打包为jar,并将其部署为共享库。因为每个人都在一次使用一个web资源,所以每次只需要关注一场战争,所以重新部署一场战争就足够了,这就像几秒钟(使用tomcat maven插件自动完成)。然而,如果涉及到共享模块,Tomcat必须完全重新启动


    如果可能的话,我建议您将应用程序分解为多个可部署组件。首先,您可以将前端和后端分成两场战争,并在可能的情况下进一步划分。

    我理解您的沮丧。我已经经历过了。我的重新部署周期是20分钟,我的意思是停止Tomcat,重新复制WAR和JAR,然后重新启动服务器

    随着时间的推移,我们重构了我们的代码库,使每一项功能(或web资源)都成为一场战争,我们从一场无所不能的战争变成了大约100场每一项都有一个关注点的战争。如果战争之间有一些共享模块,我们将模块打包为jar,并将其部署为共享库。因为每个人都在一次使用一个web资源,所以每次只需要关注一场战争,所以重新部署一场战争就足够了,这就像几秒钟(使用tomcat maven插件自动完成)。然而,如果涉及到共享模块,Tomcat必须完全重新启动


    如果可能的话,我建议您将应用程序分解为多个可部署组件。首先,您可以将前端和后端分成两场战争,并在可能的情况下进一步划分。

    但这仍然是一场隐蔽的战争-部署到Tomcat的数量会减少,但实际上会有更多的jar,因为您现在需要嵌入Tomcat、Jetty或Undertow。不。不是战争。加载速度非常快的可执行JAR。它更像是一个轻量级HTTP侦听器。你需要去自学。这是最好的建议,Tomcat embedded,D.I.,Spring for life,upvote\m/谢谢你的建议。我将看一看SpringBoot,看看它如何集成到