Как скопировать .war в каталог веб-приложений Tomcat, используя Maven?

Могу ли я добавить pom.xmlчто-нибудь, что скопирует сгенерированный .warфайл из targetкаталога в каталог моего Tomcat webapps?

15.12.2008 20:44:12
9 ОТВЕТОВ

Вы можете использовать http://cargo.codehaus.org/Deploying+to+a+running+container и настроить его соответствующим образом.

7
21.02.2013 13:06:23
Развертывание на одном легко! :) Развертывание до двух сложно. :( (если вы не запустите команду deploy дважды) stackoverflow.com/questions/732275/…
cgp 19.04.2009 02:07:14
@valerio, ссылка не работает
Bhaskara Arani 6.12.2019 11:33:58

Вы также можете взглянуть на плагин причала. Просто наберите "mvn jetty: run-war", и jetty должен запустить ваше war-файл.

Редактировать: Jetty - легкий контейнер сервлетов, подходящий для разработки и тестирования. Это также молниеносно, чтобы начать.

6
15.12.2008 23:59:37
Я не хочу запускать файл войны. Я хочу, чтобы он был помещен в каталог webapps tomcat, а не вручную.
l15a 16.12.2008 03:45:37

Не идеально, но если у вас действительно странная настройка сервера приложений, вы всегда можете использовать задание antrun для выполнения при запуске упаковки

<build>
    ....
    <plugins>
       <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <executions>
            <execution>
              <phase>package</phase>
              <configuration>
                <tasks>
                  <!-- Ant copy tasks go here -->
                </tasks>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
     </plugins>
  </build>
3
16.12.2008 19:51:10

В качестве альтернативы, вы можете посмотреть tomcat в вашей целевой директории и развернуть ее прямо оттуда.

В вашем элементе Context.xml или server.xml:

<Context path="" docBase="/path/to/target/exploded">
...
</Context>

Тогда вы можете использовать войну: взорванная цель, чтобы создать свою взорванную войну.

5
11.02.2009 05:38:56
Можете ли вы дать больше информации о том, как это настроить. Я делал это в прошлом, но Google не может найти пример конфигурации.
Drew 26.08.2010 20:10:40
Upranking этот ответ. Хотя многие другие способы работают, для меня это был самый быстрый способ (сборка 1,5 минуты против 7 минут при следующем быстром подходе)
samspot 22.12.2010 21:20:42
РЕШЕНИЕ

Я использовал плагин Maven WAR: http://maven.apache.org/plugins/maven-war-plugin/usage.html

16
10.04.2009 16:15:26
Код для добавления: <outputDirectory> </ outputDirectory> в теге конфигурации artifactId maven-war-plugin
techzen 2.03.2011 18:35:04
Как это можно сделать в случае, когда папка webapps находится на удаленном сервере (например, она может копировать поверх SCP?). Я пытаюсь сделать это с библиотекой maven-wagon-ssh, и она почти работает, но я не могу понять, как контролировать, какие файлы отправляются и куда они идут.
iX3 2.01.2013 20:34:40

Вы также можете сделать это с помощью плагина зависимости

1
19.04.2009 02:05:04
<build>
   <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.1</version>
        <configuration>
           <outputDirectory><!-- Tomcat webapps location--></outputDirectory>
           <!-- Example of Tomcat webapps location :D:\tomcat\webapps\ -->
        </configuration>
      </plugin>
    </plugins>
</build>

Как только вы добавите его в свой файл pom.xml, вы можете скопировать файл WAR, позвонив mvn packageили mvn war:war.

69
3.04.2020 05:20:06
Спасибо :) это работает. ОП должен пометить его как проверенный ответ.
Anish B. 19.02.2020 14:17:27

Это правильный подход:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
             <warName>${name}</warName>
             <outputDirectory>C:\Tomcat7\webapps</outputDirectory>
            </configuration>
        </plugin>

Это поместит файл war в папку C: \ Tomcat7 \ webapps с именем проекта maven.

9
5.06.2013 23:16:22
Нет это не так. Это очень хакерский способ.
MariuszS 10.01.2014 18:01:25

Спасибо за все вышеупомянутые ответы.

Приведенный ниже ответ работает для меня. Это всего лишь консолидированный. Ничего особенного!

</project>
 ........ 
   <build>
    <finalName>HelloWorld1</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <outputDirectory>C:\Program Files (x86)\apache-tomcat-8.5.8\webapps\</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
  </build>
</project>

За дополнительной информацией. Пожалуйста, обратитесь к зависимости: скопируйте официальную страницу для получения дополнительной информации.

2
12.12.2016 02:23:21
Предостережение - этот метод не создает файл war в <project>/targetкаталоге, а затем копирует его в outputDirectory. Это строит это непосредственно в outputDirectory. Так что, если вы ожидаете копию военного файла в targetкаталоге, его там не будет.
pamcevoy 7.12.2019 21:31:25