Tomcat 9 的 Maven 插件

Posted

技术标签:

【中文标题】Tomcat 9 的 Maven 插件【英文标题】:Maven plugin for Tomcat 9 【发布时间】:2017-05-10 15:54:14 【问题描述】:

我没有找到除 tomcat7-maven-plugin 之外的任何 tomcat-maven-plugin。 我可以将它与 apache-tomcat-9.0.0.M15 一起使用吗?

【问题讨论】:

你成功使用tomcat7-maven-plugin了吗? 可能对我有用,但不记得了。 【参考方案1】:

您可以使用该插件部署到单独运行的 tomcat 9。

run 目标不起作用,但 deploy 目标可以。

<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>TomcatServer</server>
        <path>/myapp</path>
    </configuration>
</plugin>

Maven 目标:

mvn tomcat7:deploy
mvn tomcat7:undeploy
mvn tomcat7:redeploy

注意:不要忘记在tomcat-users.xml和maven settings.xml中添加tomcat用户

tomcat-user.xml

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="admin" password="password" roles="manager-gui,manager-script" />
</tomcat-users>

ma​​nager-script 角色使应用程序(即 maven)能够将 jar/war 部署到应用程序服务器。

Maven 文件 settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings ...>
    <servers>
        <server>
            <id>TomcatServer</id>
            <username>admin</username>
            <password>password</password>
        </server>
    </servers>
</settings>

【讨论】:

你的答案是什么让它运行 Tomcat 9? 我也有同样的问题...我没有看到对 Tomcat 9 的任何引用(我对 maven 不太了解) 它使用 maven-plugin-tomcat7 部署在单独运行的 tomcat9 上。它不适用于目标 run、run-war、run-war-only 等【参考方案2】:

如其他答案所述,tomcat7-maven-plugin 仍可用于部署到正在运行的 Tomcat 9 中,并且存在管理器应用程序。但是,要运行 embedded Tomcat 9,请尝试使用 Cargo 插件:

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <version>1.7.6</version>
  <configuration>
    <container>
      <containerId>tomcat9x</containerId>
      <type>embedded</type>
    </container>
  </configuration>
</plugin>

开始:

mvn org.codehaus.cargo:cargo-maven2-plugin:run

【讨论】:

你建议的试用我失败了,但后来去codehaus货物站点使用参数-Dcargo.maven.containerId=tomcat9x-Dcargo.maven.containerUrl=http://mirror.netinch.com/pub/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.zip运行并最终成功 它不会像 tomcat-7-plugin 那样自动选择网络应用吗?【参考方案3】:

我很长一段时间都在寻找同一个问题的答案。现在我找到了。

            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.8.3</version>
                <configuration>
                    <container>
                        <containerId>tomcat9x</containerId>
                        <type>embedded</type>
                    </container>
                    <deployables>
                        <deployable>
                            <type>war</type>
                            <location>$project.build.directory/$project.build.finalName.war</location>
                            <properties>
                                <context>/</context>
                            </properties>
                        </deployable>
                    </deployables>
                </configuration>
            </plugin>

然后运行

mvn package cargo:run

【讨论】:

以上是关于Tomcat 9 的 Maven 插件的主要内容,如果未能解决你的问题,请参考以下文章

9. 使用maven的tomcat7插件 访问页面404 控制台 skip no war project?

tomcat7-maven-plugin能不能运行Tomcat9

maven集成了tomcat插件还需要额外的tomcat吗

Maven 集成Tomcat7插件

tomcat7-maven-plugin 插件调用本地的tomcat吗

Maven--配置tomcat插件