2010-02-24 3 views
2

Чтобы предоставить единый банку для нашего проекта, нам интересно, можно ли включить созданный сайт проекта (сгенерированный через плагин сайта) в пакет сгенерированного проекта ? Идея этого очень проста: у нас есть проект под названием «образец», который демонстрирует использование нашего API, и мы хотим предоставить пользовательскую документацию по API и ее использование в одном комплекте. Возможно ли использовать Maven для создания такого Jar?Добавить сайт, созданный Maven, в сгенерированный пакет

Заранее благодарен!

ответ

5

Использование site:jar, а затем плагин сборки, чтобы создать пучок все большего, должен быть возможен.

+0

Да, это может быть интересное решение. Я собираюсь попробовать. – reef

+0

Я ищу, чтобы сделать подобное, сделал ли это работу для вас? Не могли бы вы разместить дополнительную информацию, пожалуйста. – Solubris

3

Я размещаю здесь, чтобы задокументировать решение для создания военного файла с созданным maven сайтом, включенным в недавний Maven 3. Я завернул необходимые плагины сборки в профиль, который активируется Хадсоном, устанавливающим системное свойство BUILD_NUMBER , В дополнение к добавлению каталога сайта в войну, эта конфигурация генерирует артефакт -javadoc.jar (за это отвечает отдельный maven-javadoc-плагин с приложением attach-javadocs, и вы можете удалить его, если это не требуется).

<profiles> 
    <!-- We want the javadoc jar and the site within the war only when building on Hudson --> 
    <profile> 
     <activation> 
      <property> 
       <name>BUILD_NUMBER</name> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-site-plugin</artifactId> 
        <version>3.0-beta-3</version> 
        <configuration> 
         <reportPlugins> 
          <plugin> 
           <groupId>org.apache.maven.plugins</groupId> 
           <artifactId>maven-project-info-reports-plugin</artifactId> 
          </plugin> 
          <plugin> 
           <groupId>org.apache.maven.plugins</groupId> 
           <artifactId>maven-javadoc-plugin</artifactId> 
          </plugin> 
         </reportPlugins> 
        </configuration> 
        <executions> 
         <execution> 
          <id>attach-site</id> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-war-plugin</artifactId> 
        <configuration> 
         <webResources> 
          <resource> 
           <!-- this is relative to the pom.xml directory --> 
           <directory>${project.build.directory}/site</directory> 
           <targetPath>doc</targetPath> 
          </resource> 
         </webResources> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>attach-javadocs</id> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Вот такой же профиль, но для Maven2. Это полезно, если у вас есть конфигурация проекта hudson, основанная на плагине maven2 hudson.

<profiles> 
    <!-- We want the javadoc jar and the site within the war only when building on Hudson --> 
    <profile> 
     <activation> 
      <property> 
       <name>BUILD_NUMBER</name> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-war-plugin</artifactId> 
        <configuration> 
         <webResources> 
          <resource> 
           <!-- this is relative to the pom.xml directory --> 
           <directory>${project.build.directory}/site</directory> 
           <targetPath>doc</targetPath> 
          </resource> 
         </webResources> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>attach-javadocs</id> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-site-plugin</artifactId> 
        <version>2.2</version> 
        <executions> 
         <execution> 
          <id>attach-site</id> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
     <reporting> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-project-info-reports-plugin</artifactId> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-javadoc-plugin</artifactId> 
       </plugin> 
      </plugins> 
     </reporting> 
    </profile> 
</profiles> 
+0

любым способом конвертировать его в военный файл? все, что ему действительно нужно, это общий файл web.xml. что сделает его доступным для использования в контейнере веб-приложений – spy

0

Хитрость заключается в том, чтобы настроить Maven-сайт-плагин для создания сайта в фазе происходит до пакета (например, подготовить-пакет), а затем включить сгенерированный сайт в веб-приложение настраиваемого Maven-боевой плагин правильно.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-site-plugin</artifactId> 
    <version>3.5</version> 
    <executions> 
     <execution> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>site</goal> 
       <goal>stage</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <webResources> 
      <resource> 
       <directory>${basedir}/target/staging</directory> 
       <includes> 
        <include>**</include> 
       </includes> 
      </resource> 
     </webResources> 
    </configuration> 
</plugin> 

Here вы можете найти образец проекта, используя эту конфигурацию. Here живая демонстрация.

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