在 JAR 的资源中包含 Maven 站点 HTML 页面

Include Maven Site HTML pages in JAR's resources

我有一个构建 JAR 文件的 Maven 项目。

它还会创建一个网站(使用 maven-site-plugin)来描述有关项目的信息。

我想将 maven-site-plugin 生成的结果 html 页面包含在创建的 JAR 的资源中,以便帮助系统可以在运行时访问它们。

这可能吗?如果是,怎么做?

我试过使用 site:jar 目标,但这总是会创建一个 附加 JAR,并根据 documentation 添加“-site”。

我已经解决了这个问题,方法是使用 maven-resources-pluginsite${project.build.directory}/site 目录复制到 ${project.build.directory}/classes,这是最终 JAR 的内容。

示例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.me</groupId>
   <artifactId>site-example</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <properties>
      <site.directory>${project.build.directory}/site</site.directory>
   </properties>
   <build>
      <resources>
         <resource>
            <directory>${site.directory}</directory>
         </resource>
      </resources>
      <plugins>
         <plugin>
            <!-- Include the maven site in the final JAR - we do this by running site:site BEFORE install -->
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
               <execution>
                  <id>copy-resources</id>
                  <phase>install</phase>
                  <goals>
                     <goal>copy-resources</goal>
                  </goals>
                  <configuration>
                     <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                     <resources>
                        <resource>
                           <directory>${site.directory}</directory>
                           <filtering>true</filtering>
                        </resource>
                     </resources>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>