2010-02-24 71 views
2

爲了爲我們的項目提供一體化Jar,我們想知道是否可以將項目生成的網站(通過網站插件生成)包含到生成的項目包中? 這背後的想法非常簡單,我們有一個名爲「sample」的項目,演示了我們的API的用法,並且我們想給用戶提供關於API及其在單個包中的使用情況的文檔。 是否有可能使用Maven創建這樣一個罐子?將Maven生成的網站添加到生成的包中

在此先感謝!

回答

5

使用site:jar,然後使用程序集插件創建一個everthing包應該是可能的。

+0

是的,這可能是一個有趣的解決方案。 我要試一試。 – reef 2010-02-24 17:09:51

+0

我正在尋找類似的東西,爲你做這個工作嗎?你能否發佈一些更多的細節。 – Solubris 2012-10-02 03:38:23

3

我在這裏發佈文檔,提供一個解決方案,用於通過Maven 3附帶的Maven生成站點構建一個war文件。我已將所需的構建插件包裝到由Hudson激活的配置文件中,並將BUILD_NUMBER系統屬性。除了將網站目錄添加到war之外,此配置還會生成-javadoc.jar工件(具有attach-javadocs執行的單獨maven-javadoc-plugin負責此操作,如果不需要,可以將其刪除)。

<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。如果你有一個依賴於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文件。這將使其可部署到Web應用程序容器 – spy 2015-07-27 15:42:46

0

訣竅是配置行家現場-插件在相包之前發生,以生成位點(例如準備包),然後包括所生成的位點引入該web應用程序正確地配置行家戰的插件。

<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現場演示。