2016-02-04 1 views
1

Фактически, я создаю сайт maven, содержащий документацию моего проекта. Он работает очень хорошо, на самом деле, если работает так хорошо, что мои клиенты хотят получить этот сайт в качестве поставляемого (для очевидной цели документации).Создайте сайт zip с Maven

Как я могу указать Maven на создание zip всего сайта и развернуть его в моем менеджере артефактов (Nexus)? Я пробовал несколько вещей, но если я правильно понимаю, развертывание артефактов и создание сайта используют разные жизненные условия, а генерация сайта происходит после развертывания артефактов.

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

PS: предоставление доступа к клиенту на нашем внутреннем сайте НЕ является вариантом.

ответ

4

Это рабочее решение, делегированное Maven profile, чтобы изолировать поведение (и ускорить нормальные сборки), но которое также может быть включено в сборку по умолчанию, если это необходимо (хотя и не рекомендуется).

<profiles> 
    <profile> 
     <id>site-zip</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-site-plugin</artifactId> 
        <version>3.4</version> 
        <executions> 
         <execution> 
          <id>pack-site</id> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>site</goal> 
           <goal>jar</goal> 
          </goals> 
          <configuration> 
           <attach>false</attach> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 

       <plugin> 
        <groupId>com.coderplus.maven.plugins</groupId> 
        <artifactId>copy-rename-maven-plugin</artifactId> 
        <version>1.0.1</version> 
        <executions> 
         <execution> 
          <id>rename-file</id> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>rename</goal> 
          </goals> 
          <configuration> 
           <sourceFile>${project.build.directory}/${project.build.finalName}-site.jar</sourceFile> 
           <destinationFile>${project.build.directory}/${project.build.finalName}-site.zip</destinationFile> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 

       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>build-helper-maven-plugin</artifactId> 
        <version>1.10</version> 
        <executions> 
         <execution> 
          <goals> 
           <goal>attach-artifact</goal> 
          </goals> 
          <phase>package</phase> 
          <configuration> 
           <artifacts> 
            <artifact> 
             <file>${project.build.directory}/${project.build.finalName}-site.zip</file> 
             <type>zip</type> 
             <classifier>site</classifier> 
            </artifact> 
           </artifacts> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Что профиль на самом деле делает:

Таким образом, бег

mvn clean install -Psite-zip 

Будет также установить в ваш локальный кеш Maven - это заархивированный сайт. Фаза deploy будет делать то же самое в вашем целевом репозитории Maven.

Обратите внимание, что плагин Maven Site и плагин для копирования должны быть объявлены в указанном выше порядке, чтобы следовать требуемому потоку в пределах одной фазы.

Также обратите внимание, что если zip не является сильным требованием, вы можете просто пропустить выполнение копирования и сборки и использовать только выполнение Maven Site. По умолчанию jar, созданный с предоставлением сайта, уже прикреплен к сборке (и, следовательно, он будет установлен и развернут автоматически). Чтобы иметь zip, нам пришлось отключить это поведение (<attach>false</attach>) и снова подключить его через плагин Build Helper.

Сгенерированный заархивированный автомат classifier, который в этом случае равен site.

+0

безупречный ответ, спасибо! – spi