【问题标题】:Deploy to Tomcat using Maven使用 Maven 部署到 Tomcat
【发布时间】:2020-08-08 19:50:00
【问题描述】:

我正在通过在线示例使用 Maven 部署我的 Web 服务 (Spring Boot)。在开发中,我正在运行“mvn spring-boot:run”来运行嵌入式 Tomcat 服务器,但现在我想在我的实际 Tomcat 服务器上运行它,而不是在嵌入式服务器上运行。

但是,当我运行“mvn install tomcat7:deploy”时,它会将其安装在 Maven 存储库中。我关注了大约 4 个不同的在线示例,但它总是做同样的事情。相反,我希望它出现在我的 apache-tomcat-9.0.14 目录中。

我需要手动将文件从 Maven 存储库复制到我的 apache tomcat 目录吗?

谢谢你..任何帮助表示赞赏!

【问题讨论】:

    标签: maven tomcat


    【解决方案1】:

    如果您有maven-war-plugin,那么我们可以指示maven 将WAR 复制到tomcat 中的所需位置。

    <build>
       <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.2</version>
            <configuration>
               <outputDirectory><!-- Webapps directory location inside the Tomcat. Something like D:\ProgramFiles\apache-tomcat-9.0.30\webapps--></outputDirectory>
            </configuration>
          </plugin>
        </plugins>
    </build>
    

    如果你的依赖被标记为provided的范围,那么这些库需要手动复制到tomcat里面的lib目录下或者你可以使用maven-dependency-plugin

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.2</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${tomcat.directory}/lib</outputDirectory>
              <includeScope>compile</includeScope>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
              <excludeTransitive>true</excludeTransitive>
            </configuration>
          </execution>
        </executions>
      </plugin>
    

    为外部库设置一个单独的目录总是更好的做法。 tomact 里面有lib\ext\ 之类的东西。 然后,该目录应列在 tomcat 内 \conf 目录中的 catalina.properties 中。

    common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar,"${catalina.home}/lib/ext","${catalina.home}/lib/ext/*.jar""
    

    如果您的依赖项属于 compile 范围或未指定范围(即默认情况下它们具有 compile 范围)。然后,它们将与 WAR 文件捆绑在一起,因此无需将它们复制到上述目录。

    以上将帮助您将 WAR 部署到外部 tomcat 中。将 WAR 文件复制到 webapps 目录并将所需的 jar 文件 [如果有] 复制到 lib [或 ext] 目录后,您可以在 Windows 中使用 bin\startup.bat 或 'bin\startup.sh 启动 tomcat '在Linux系统中

    【讨论】:

    • 太棒了!!非常感谢。
    • @scoobyroo 如果这有助于解决您的问题,请将答案标记为已接受的答案。 :)
    • 我这样做了,但由于我是新手,它会记录它但不会显示它。
    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2013-03-27
    • 1970-01-01
    相关资源
    最近更新 更多