tomcat - 使用 tomcat-maven-plugin 部署预构建的 WAR

标签 tomcat maven

我有一个由 Warbler 正确生成的 WAR 文件,当我手动完成这一切时它可以正常工作。

我正在尝试使用 maven(通过 Hudson)

1)调用warble(成功)

<phase>package</phase>
<configuration>
    <executable>/bin/bash</executable>
    <workingDirectory>.</workingDirectory>
    <arguments>
        <argument>-c</argument>
        <argument>
            echo "Sourcing bashrc"
            source ~/.bashrc
            rvm use jruby
            echo "Path is $PATH"
            echo "Gem path is $GEM_PATH"
            warble --trace
            rm -R target/*
            mv workspace.war target/yams.war
        </argument>
    </arguments>
</configuration>

2) 部署到tomcat

这是我遇到问题的第二部分。我只想告诉 maven 获取我刚刚生成的 WAR 文件(并帮助移动到 target/,正如它所期望的那样)并部署它。

问题是,如果我没有为整个项目指定打包,它只会跳过任何部署(“跳过非 WAR”)。如果我指定 WAR 包装,它会尝试自己制作一个无用的 WAR,这没关系,但它会不断要求越来越多的信息(webxml 等)来制作这个无用的 WAR,无论如何我最终都会删除和忽略它。

基本上,是否有一种简单的方法可以对 maven 说“将我刚刚在工作区/目标/中创建的 war 部署为你自己创建的任何 WAR”?

最佳答案

第一次发帖:)

是的,这是可能的。诀窍是禁用 maven-war-plugin 的执行,这样它就不会尝试打包任何东西。然后你可以简单地将 tomcat 指向你已经组装好的预构建 war 。这是我的 POM,它部署了预构建 lambda Probe war 文件:

<project>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Probe</artifactId>
    <packaging>war</packaging>

    <name>Probe</name>  

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <id>default-war</id>
                        <phase>none</phase>
                    </execution>
                </executions>                    
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tomcat-maven-plugin</artifactId>
                <configuration>
                    <warFile>Probe.war</warFile>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

感谢waffel's Weblog为我提供通用解决方案,使我弄清楚如何禁用 maven-war-plugin 的执行。 :)

*编辑:您可能还想禁用 maven-install-plugin 以防止 maven 在您调用经常使用的“mvn clean install”时提示(消息如下所示:)

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:install (default-install) on project : The packaging for this project did not assign a file to the build artifact

将此部分添加到您的 POM:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.3.1</version>
            <executions>
                <execution>
                    <id>default-install</id>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>

如果您希望您的项目将 war 文件实际安装到您的存储库中,我认为您将不得不使用 maven-install-plugin 的安装:安装文件目标。

关于tomcat - 使用 tomcat-maven-plugin 部署预构建的 WAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114082/

相关文章:

multithreading - 为什么play(netty3)上传使用单线程?

java - 在 Tomcat 中部署了 war 的 Hotswap Spring 应用程序

java - Maven 缺少 Artifact org.geotools :gt-shapefile:jar:11-SNAPSHOT

maven - 如何使用maven部署仅部署子模块?

java - 如何使用 Maven 正确管理 Web 应用程序的站点?

java - dropwizard + Powermock + Mockito + Maven 构建错误,出现 ClassNotFoundException "ThreadSafeMockingProgress"

java - 如何使用maven将可执行文件放入war文件

GWTP 防止 XSRF 攻击

java - 如果我手动构建并部署到 Tomcat,但在 IntelliJ 下无法运行 Web 应用程序?

java - 在 Idea 和私有(private) Artifact 存储库中使用 Gradle