2016-01-25 2 views
2

Можно изменить путь целевой сборки, где файл war помещается на mvn package по:Как скопировать файл войны в несколько папок?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <outputDirectory>my\target\folder</outputDirectory> 
    </configuration> 
</plugin> 

Вопрос: Как я могу создать архив войны в умолчанию /target, папки, но дополнительно скопировать военный файл один (или несколько) других пунктов назначения после сборки?

+0

Каково намерение сделать это? – khmarbaise

+0

@khmarbaise, имеющий файл локально на dev, а если тест и ok, то прямо развертывайте войну до производства. что в основном происходит, поэтому удобно, если файл войны автоматически копируется в родительскую папку производственного веб-сервера. – membersound

ответ

2

Простым способом для этого было бы связать выполнение maven-antrun-plugin с фазой package. Преимущество состоит в том, что вам не нужно повторно выполнять maven-war-plugin, как mentioned in this answer.

Это исполнение скопирует главный артефакт в папку /path/to/folder.

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
    <execution> 
     <phase>package</phase> 
     <configuration> 
     <target> 
      <copy file="${project.build.directory}/${project.build.finalName}.war" 
       todir="/path/to/folder" /> 
     </target> 
     </configuration> 
     <goals> 
     <goal>run</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

(Этот фрагмент должен быть помещен внутрь элемента <build><plugins>).

Выполнение mvn clean install (или «Запуск как ...> Установка Maven» в Eclipse), Maven будет делать то, что вы хотите. ${project.build.directory}/${project.build.finalName}.war относится к главному артефакту WAR, присутствующему в каталоге сборки (по умолчанию это target).

Смежные вопросы