2016-01-26 4 views
1

У меня есть проект maven, который создает WAR, а затем упаковывает его в zip-файл, предназначенный для конкретного инструмента развертывания. Я не хочу загружать WAR, поскольку это будет пустой тратой пространства.Maven: строить войну, но развернуть другой артефакт?

Возможно ли построить ВОЙН, но только загрузить/развернуть zip в том же файле pom?

Edit:

Нет, "дублировать" вопрос предложенных выше не помогает малейшем. Я должен указать <packaging>war</packaging>, и даже если я этого не сделаю, как только я буду использовать плагин maven war, он войдет в войну как часть развертывания.

И еще мне нужны другие артефакты в сборке (источник, тесты и т. Д.). Мне просто не нужна война.

+0

Почему вы хотите развернуть заархивированный файл? – Michal

+0

Возможно, вы можете сделать это, используя deploy: deploy-file после сборки zip-подготовки. – Michal

+0

Возможный дубликат [Как развернуть только zip-артефакты в maven] (http: // stackoverflow.com/questions/25441633/how-to-deploy-only-zip-artifacts-in-maven) –

ответ

1

Вот предложенный подход к развертыванию войны или почтовый индекс, в зависимости от потребности:

  • сборки по умолчанию все равно будет обеспечить WAR в качестве выходного
  • Профиль добавляется, чтобы пропустить нормальный Maven Разверните выполнение плагина как часть фазы развертывания и добавьте дальнейшее выполнение (очевидно, не пропущенное) развертывание только ZIP-файла с помощью цели deploy-file, как было предложено @Michal, но не через командную строку (лучше как часть сборки).

В зависимости от необходимости вы можете, конечно, переключить поведение по умолчанию из профиля на сборку по умолчанию или даже полностью избавиться от сборки по умолчанию (только WAR).

Пример:

<build> 
    <finalName>test-war-zip</finalName> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.4.1</version> 
      <configuration> 
       <descriptor>src/assembly/descriptor.xml</descriptor> 
      </configuration> 
      <executions> 
       <execution> 
        <id>create-zip</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

<profiles> 
    <profile> 
     <id>deploy-zip</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-deploy-plugin</artifactId> 
        <version>2.8.2</version> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
        <executions> 
         <execution> 
          <id>deploy-zip</id> 
          <phase>deploy</phase> 
          <goals> 
           <goal>deploy-file</goal> 
          </goals> 
          <configuration> 
           <skip>false</skip> 
           <file>${project.build.directory}/your.file.here</file> 
           <repositoryId>your.id.here</repositoryId> 
           <url>http://something.here</url> 
           <groupId>${groupId}</groupId> 
           <artifactId>${artifactId}</artifactId> 
           <version>${version}</version> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Примечание глобальной конфигурации для Maven Plugin Deploy и его skip к true. Он эффективно пропустит цель deploy. Дальнейшее выполнение позаботится об ZIP-файле.

С вышеуказанным подходом, выполняя обычную сборку, Maven будет продолжать развертывание сгенерированного WAR, при переключении на профиль следующим образом:

mvn clean deploy -Pdeploy-zip 

Maven пропустит выполнение по умолчанию Maven Deploy Plugin (его гол deploy) и выполнить вместо этого цель deploy-file во время фазы deploy.

В рамках сборки вы тогда имеем:

[INFO] --- Maven развернуть-плагин: 2.8.2: развертывание (по умолчанию-Deploy) @ тест-боевой почтовый индекс - -
[INFO] Пропуск артефактов развертывания
[INFO]
[INFO] --- Maven развернуть-плагин: 2.8.2: развертывание-файл (развернуть-молния) @ тест-война-молния ---
Загружено: http://the.repository.here (986 B при 3.9 KB/sec)

+0

Хорошо, это довольно сложно, но на данный момент я не могу найти лучшее решение. –

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