将 Maven 生成的站点添加到生成的包中
Posted
技术标签:
【中文标题】将 Maven 生成的站点添加到生成的包中【英文标题】:Add Maven generated site to generated package 【发布时间】:2010-02-24 17:01:12 【问题描述】:为了为我们的项目提供一个一体化的 Jar,我们想知道是否可以将项目的生成站点(通过站点插件生成)包含到生成的项目的包中? 这背后的想法非常简单,我们有一个名为“sample”的项目,它演示了我们的 API 的用法,我们希望在单个包中为用户提供有关 API 及其用法的文档。 是否可以使用 Maven 来创建这样的 Jar?
提前致谢!
【问题讨论】:
【参考方案1】:使用site:jar
,然后使用程序集插件来创建一个包应该是可能的。
【讨论】:
是的,这可能是一个有趣的解决方案。我要试试。 我想做类似的事情,这对你有用吗?请您发布更多详细信息。【参考方案2】:我在这里发布一个解决方案,用于使用最近的 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。如果您的 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>
【讨论】:
有什么办法可以把它转换成war文件?它真正需要的是一个通用的 web.xml 文件。这将使其可部署到 Web 应用容器【参考方案3】:诀窍是配置 maven-site-plugin 以在包之前发生的阶段生成站点(例如 prepare-package),然后将生成的站点包含到 webapp 中正确配置 maven-war-plugin。
<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 现场演示。
【讨论】:
以上是关于将 Maven 生成的站点添加到生成的包中的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 pom.xml 以将 jooq 类生成到两个不同的包中?