8

我希望我的构建过程将我的战争部署到远程服务器。直到现在我已经跑了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 插件。那可能吗 ?

4

3 回答 3

7

该插件默认不执行。你必须向它添加一个执行,或者像你一样调用它(fe 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 的部署将发生在预集成测试阶段,我相信这是最常见的阶段。

于 2012-09-23T20:10:44.633 回答
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

于 2012-09-24T07:58:12.527 回答
1

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

大多数java开发人员认为“发布”工件实际上是对maven的“部署”。

如果您认为 Maven 只关心使用依赖管理进行构建,这会有所帮助。构建依赖管理之外的任何东西都需要特殊调用(如 tomcat7:redeploy)或不同的脚本环境。

于 2015-08-18T17:25:29.670 回答