Развертывание готовой WAR с помощью tomcat-maven-plugin - PullRequest
3 голосов
/ 24 мая 2011

У меня есть файл WAR, правильно сгенерированный Warbler, и он работает, когда я делаю все это вручную.

Я пытаюсь использовать maven (через Hudson) для

1) InvokeWarble (успешно)

<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?

1 Ответ

8 голосов
/ 11 июля 2011

Первое в истории сообщение:)

Да, это возможно.Хитрость заключается в том, чтобы отключить выполнение плагина maven-war-plugin, чтобы он ничего не пытался упаковать.Тогда вы можете просто указать коту на войну перед сборкой, которую вы уже собрали.Вот мое POM, которое развертывает лямбда-зонд 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>

Благодаря Web-журналу waffel за предоставление мне общего решения, которое привело меня к определениюкак отключить выполнение плагина maven-war-.:)

* edit: вы также можете отключить maven-install-plugin, чтобы maven не жаловался при вызове часто используемой mvn clean install (сообщение выглядит так:)

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-install-plugin: 2.3.1: установить (default-install) в проекте: Упаковка для этого проекта не назначила файлк артефакту сборки

Добавьте этот раздел к своему 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-file цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...