我的团队主要使用Eclipse,但承包商和自由职业者往往对IDE和工作流程有不同的偏好。问题是以用户友好的方式运行我们的Spring / Maven / Tomcat应用程序而没有eclipse(或任何其他IDE)。我认为必须有一个快速的控制台命令,例如" mvn run"或者一个简单的.sh和.bat文件。
使用Eclipse,您可以:
最好的部分,eclipse将扫描您的项目并在您键入时刷新资源,甚至无需重新启动Tomcat。 Eclipse也将从工作区运行项目,而无需将任何内容移动到Tomcat或需要生成WAR。该选项表示,"使用工作区元数据(不修改Tomcat安装)"
Here the settings in eclipse for my Tomcat
但是,没有eclipse,我知道要告诉他们的是运行" mvn install"然后将war文件复制/粘贴到Tomcats" webapps"目录。这个过程非常乏味,我通常说服他们使用日食,他们给我一个皱眉的脸。
所以我们的构建堆栈是这样的:Maven,ANT,NPM,Grunt。这四个中的任何一个都可以轻松地在外部Tomcat上运行项目吗?我真的很想在同样的情况下听到其他人的故事,并在某些指导下去寻找。
我在网上找到的所有内容如下:https://www.mulesoft.com/tcat/tomcat-reload。我无法确定这是否是我想要的。
要注意,我们使用的是独立的Tomcat v9,因为maven-tomcat只是v7。
谢谢大家
答案 0 :(得分:1)
要注意,我们使用的是独立的Tomcat v9,因为maven-tomcat是 只有v7。
我不明白这句话。
您可以使用maven cargo或maven tomcat插件部署到tomcat。
对于tomcat插件,请看这个: http://tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/ 我不知道它是否适用于Tomcat 9但是使用tomcat 8,它可以很好地工作。 你试过那个插件吗?
货物,看看这个: https://codehaus-cargo.github.io/cargo/Deploying+to+a+running+container.html
在这两种情况下,我们的想法是在您的pom.xml中配置插件,在其中打包您的战争,以便在生命周期的适当阶段触发部署(默认情况下绑定阶段,但您可以更改它)。
例如,这里有一个Tomcat Maven插件示例,我告诉Tomcat插件在预集成测试阶段部署由底层pom.xml生成的工件:
<project>
<packaging>war</packaging>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.3-SNAPSHOT</version>
<configuration>
<url>http://localhost:8080/mymanager</url>
</configuration>
<executions>
<execution>
<id>tomcat-deploy</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>
有关详细信息,请随时阅读官方文档。
答案 1 :(得分:1)
您不需要修改构建脚本。
只需在Tomcat中创建一个直接指向.war文件的context.xml文件,然后生成&#34; reloadable&#34;。
示例:在$TOMCAT_BASE/conf/Catalina/localhost
中创建一个包含所需上下文名称的文件,例如MyApp.xml
。这将使localhost:8080/MyApp
成为您应用的网址(或其正在侦听的任何端口)。
文件内容应为:
<Context docBase="C:/path/to/MyApp.war" reloadable="true" />
如果您不在Windows上,则不使用C:
前缀。
现在,每当您更新.war文件时,例如使用mvn install
,Tomcat将自动重新加载应用程序(稍微延迟,我相信最多20秒)。