2010-02-24 50 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现场演示。