【问题标题】:Tomcat 7 Maven plugin running differrent version of TomcatTomcat 7 Maven 插件运行不同版本的 Tomcat
【发布时间】:2015-03-19 21:49:51
【问题描述】:

我在 OSX 中安装了 Tomcat 7.0.59,但是当运行 maven 插件时,它说它正在运行 7.0.47,并且它在目标中创建了一个新的 tomcat 目录,并带有一些新的配置。 我只希望它运行我在机器中安装的版本,使用 $CATALINA_HOME/conf 下的配置并将应用程序正常部署到 $CATALINA_HOME/webapps。

这是运行插件时的消息:

[INFO] Running war on http://localhost:8080/xxx
[INFO] Creating Tomcat server configuration at /Users/abc/xxx/target/tomcat
[INFO] create webapp with contextPath: /xxx
INFO: Starting service Tomcat
Mar 19, 2015 3:12:45 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
Mar 19, 2015 3:12:50 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]

它创建了以下结构:

target/tomcat//conf:
logging.properties tomcat-users.xml   web.xml

target/tomcat//logs:
access_log.2015-03-19

target/tomcat//webapps:

target/tomcat//work:
Tomcat

target/tomcat//work/Tomcat:
localhost

target/tomcat//work/Tomcat/localhost:
xxx

target/tomcat//work/Tomcat/localhost/xxx:

这是插件的配置:

    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>http://localhost:8080/manager/text</url>
        <server>localhost</server>
    </configuration>
</plugin>

这是 /Library/Tomcat/bin/version.sh 的输出:

Using CATALINA_BASE:   /Library/Tomcat
Using CATALINA_HOME:   /Library/Tomcat
Using CATALINA_TMPDIR: /Library/Tomcat/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
Using CLASSPATH:       /Library/Tomcat/bin/bootstrap.jar:/Library/Tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.59
Server built:   Jan 28 2015 15:51:10 UTC
Server number:  7.0.59.0
OS Name:        Mac OS X
OS Version:     10.10.2
Architecture:   x86_64
JVM Version:    1.8.0_40-b25
JVM Vendor:     Oracle Corporation

【问题讨论】:

  • tomcat7-maven-plugin 设计 用于运行嵌入式 Tomcat。这就是它的作用!您可以要求它使用deploy goal 将应用程序部署到现有的 Tomcat 实例,但这不会启动 Tomcat。 Maven 不应该启动外部服务,这不是 Maven 所做的 - 插件遵循这种设计。
  • 谢谢。在这种情况下,如何将 $CATALINA_HOME/conf 中的文件复制到 target/tomcat/conf?
  • 是的,请阅读文档。有大量的配置选项。您正在寻找additionalConfigFilesDir。

标签: java macos maven tomcat7 maven-tomcat-plugin


【解决方案1】:

背后的原因是maven插件下载了自己版本的tomcat(和你本地安装的tomcat无关)。

tomcat7-maven-plugin v.2.2 依赖于 Tomcat v.7.0.47。

tomcat7-maven-plugin 引用父项目tomcat-maven-plugin,它本身定义了正在使用的 tomcat 的版本(即&lt;tomcat7Version&gt;7.0.47&lt;/tomcat7Version&gt;)。只需查看 POM XML。

【讨论】:

    【解决方案2】:

    您可以安装最新版本的 Tomcat (8.0.20) ,手动启动它,然后运行 ​​Tomcat 7 maven 插件没有任何问题。我的博客 (http://blog.devcanvas.org/deploy-a-web-application-from-the-command-line-by-using-tomcat-maven-plugin/) 上有一篇完整说明的文章。 尝试将 brew 用于 Tomcat 和 maven。

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 2012-06-11
      相关资源
      最近更新 更多