像eclipse一样运行Tomcat app但没有eclipse

时间:2016-10-19 17:58:22

标签: java maven tomcat build automation

我的团队主要使用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。

谢谢大家

2 个答案:

答案 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秒)。