tomcat7 maven插件的默认阶段是什么?

时间:2012-09-23 19:23:42

标签: maven maven-plugin

我希望我的构建过程将我的战争部署到远程服务器。直到现在我已经跑了mvn clean install tomcat7:deploy

这对我来说似乎不对,因为它应该是deploy阶段的一部分。但如果我尝试做mvn deploy我得到:

Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter

由于我没有定义要部署的任何存储库(我真的不想部署到远程存储库,只是使用此阶段来执行tomcat maven插件...)

我希望能够在不部署到任何远程存储库的情况下运行tomcat maven插件。这可能吗?

3 个答案:

答案 0 :(得分:7)

默认情况下,插件不会执行。你必须为它添加一个执行,或者像你一样调用它(例如,mvn clean install tomcat7:deploy)。

Tomcat上的部署与Maven部署阶段/部署到远程存储库无关。

要将Tomcat部署绑定到某个阶段,请将以下内容添加到tomcat maven插件配置中:

  <executions>
    <execution>
      <id>tomcat-deploy</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>deploy</goal>
      </goals>
    </execution>
  </executions>

在此配置中,Tomcat的部署将在预集成测试阶段进行,这是我认为最常见的阶段。

答案 1 :(得分:1)

解决方案是将其绑定到配置文件。

<profile>
  <id>webapp-deploy</id>
..
          <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>tomcat-deploy</id>
                <phase>install</phase>
                <goals>
                  <goal>deploy-only</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
..
</profile>

然后运行-Pwebapp-deploy

答案 2 :(得分:1)

这是因为Maven(在一个超级加重的决定中)决定选择“部署”这个词。&#34;在Maven世界中,部署意味着获取刚刚构建的二进制文件并将其上载/存储在本地maven存储库中。不要将新构建的战争部署到服务器上。

大多数Java开发人员会考虑&#34;发布&#34;一件神器实际上是一个&#34; deploy&#34;到了maven。

如果你认为maven只关心依赖管理的构建,那会很有帮助。构建依赖关系管理之外的任何内容都需要特殊调用(如tomcat7:redeploy)或不同的脚本环境。