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

时间:2011-05-24 17:01:46

标签: 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文件(并按照预期将其移动到目标/)并部署它。

问题是,如果我没有为整个项目指定包装,它只会跳过任何部署(“跳过非WAR”)。如果我指定WAR包装,它会尝试制作一个无用的WAR本身,这样就可以了,但它不断要求提供越来越多的信息(webxml等)来制作这个无用的WAR,我最后会删除并忽略它。

基本上,有没有一种简单的方法可以说“把我刚刚在工作区/目标中创建的战争并像你自己制作的任何WAR那样部署到maven?”

1 个答案:

答案 0 :(得分:8)

首次发帖:)

是的,有可能。诀窍是禁用maven-war-plugin的执行,这样它就不会尝试打包任何东西。然后你可以简单地将tomcat指向你已经组装的预制战争。这是我的POM,它部署了prebuild 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'时抱怨(消息如下所示:)

  

[错误]无法执行目标   org.apache.maven.plugins:Maven的安装,插件:2.3.1:安装   项目的(默认安装):此包装   project没有将文件分配给构建工件

将此部分添加到您的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的install:install-file目标。