Maven 是否在github页面中包含基于pom.xml的版本号?

Maven 是否在github页面中包含基于pom.xml的版本号?,maven,github,github-pages,Maven,Github,Github Pages,我有一个基于GitHub的Java Maven,我在那里维护它 我在两个地方提到了maven项目的版本号。目前,我手动更新和手动使用版本号(在一页上多次) 有没有一种方法可以使版本号具有单一来源? 其中之一: 小解决方案:在页面顶部定义它 中等解决方案:为文档定义一次(挑战:/doc for documentation运行与readme.md不同(?) 最佳解决方案:从pom.xml读取 建议很受欢迎问题在于,这些文件是在两种不同的上下文中访问的:README.md只在GitHub本身上读取

我有一个基于GitHub的Java Maven,我在那里维护它

我在两个地方提到了maven项目的版本号。目前,我手动更新和手动使用版本号(在一页上多次)

有没有一种方法可以使版本号具有单一来源?

其中之一:

  • 小解决方案:在页面顶部定义它
  • 中等解决方案:为文档定义一次(挑战:/doc for documentation运行与readme.md不同(?)
  • 最佳解决方案:从pom.xml读取

建议很受欢迎

问题在于,这些文件是在两种不同的上下文中访问的:README.md只在GitHub本身上读取,或者在您的repo副本中读取。Jekyll处理后,
index.md
文件将转换为
index.html
文件并在您的网页上查看

小解决方案:在页面顶部定义它

同样,问题是,
README.md
没有被处理成HTML,因此将其添加到前台不会神奇地将其添加到内容中

中等解决方案:为文档定义一次(挑战:/doc for documentation运行与readme.md不同(?)

您仍然存在未处理的
README.md
问题。这只是基本的文本

最佳解决方案:从pom.xml读取

你不能在GitHub页面上这样做,除非你在你的Jekyll网站上发布
pom.xml
post。这几乎肯定不是你想做的

您可能会找到一个Maven Jekyll插件,为您创建网页内容。如果是这样,那么您可能可以将
pom.xml
中的变量注入到Jekyll中。然后,您将放弃自动调用Jekyll的GitHub页面


但老实说,听起来你有点想得太多了。如果我是你,我会继续使用手动更改的简单工作流程。您可以在
index.md
中使用frontmatter,只需在一个地方指定它。

有一种方法可以使用maven resources插件提供的过滤,但我觉得有点不对劲

首先,需要将项目版本的任何文档放置在最终文档的单独位置(例如,名为
文档模板
)的文件夹)。在这些文件中,将项目版本替换为
@project.version@
,这是Maven在其筛选步骤中识别的标记

然后,您可以添加一个插件配置,将模板文档视为过滤资源,并将其输出到最终文档位置;e、 g:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/docs</outputDirectory>
                <resources>
                    <resource>
                        <directory>doc-templates</directory>
                        <includes>
                            <include>file-with-version.md</include>
                        </includes>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

maven资源插件
复制
包裹
复制资源
${basedir}/docs
文档模板
file-with-version.md
符合事实的
注意,它将此执行的输出目录设置为
${basedir}/docs
${basedir}
为我解析到项目的根目录(pom.xml所在的位置),因此此配置使Maven将资源输出到您的文档目录中

使用Maven资源过滤的优点是,您还可以在文档中自动包含其他变量(甚至系统变量!)

在提交文档之前,您需要记住运行
mvn包
,因为运行maven的任何构建管道也会更新文档,但不会提交文档(除非您让它这样做)


更新:我刚刚意识到,如果您在
compile
上运行上述执行,它将在每次编译时更新文档;这意味着您不太可能在推之前忘记更新它。YMMV.

你可能会考虑由Maven创建整个网站?当你在线查看readme.md时,会看到它被呈现为HTML。不知道这是否使用了Jekyll Processor,但这与我的想法并不完全一致:Github元数据允许访问“最新版本”object@stwissel它被呈现为HTML,但不是由Jekyll呈现的。至少,不同于将GitHub页面标记转换为HTML的Jekyll。您可以通过在
README.md
文件中添加前端内容并尝试在内容中使用它来测试这一点。