检查 pom.xml 以符合 github 页面的 mvn site 命令

Posted

技术标签:

【中文标题】检查 pom.xml 以符合 github 页面的 mvn site 命令【英文标题】:check of pom.xml to be compliant with mvn site command for github pages 【发布时间】:2019-01-25 17:06:02 【问题描述】:

当尝试使用

将我的开源项目发布到 gh-pages 时
mvn site

由于 maven 和 github 页面工作方式的变化,最近出现了很多障碍。

学习后

https://help.github.com/articles/creating-project-pages-using-the-command-line/ https://maven.apache.org/plugins/maven-site-plugin/ https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/

以下是我发现的一些必要的先决条件和遇到的问题:

先决条件

    git 分支需要显示一个 gh-pages 分支,例如使用https://gist.github.com/ramnathv/2227408中的命令后 maven-site-plugin 和 maven-project-info-reports-plugin 的版本必须正确且正确配置:maven-site plugins 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent dependency.locations.enabled 属性需要为 false Why am I getting Maven error: "Unable to determine if resource X exists in http://maven.glassfish.org/content/groups/glassfish"?

问题

How to force GitHub Pages build? Maven: Report plugin org.apache.maven.plugins:maven-project-info-reports-plugin has an empty version Maven: What is pluginManagement? Multi module POM - creating a site that works Struggling with Maven parent/child plugin configuration inheritance

甚至没有提到我必须用于 ssh-wagon 和 Java8 javadoc 等的变通方法

恕我直言,使用的插件是“移动目标”。根据我的经验,几个月前有效的东西今天不会有效。所以我一直在修复我的 pom.xml 文件以跟上并且文件变得越来越长。

参见例如https://github.com/BITPlan/com.bitplan.simplerest/blob/master/pom.xml

对于我的内部项目,我使用父 pom 来确保项目具有通用配置。对于开源项目,我还没有找到将父 pom 用于一组项目的方法。

我想确保将我找到的工作配置“转移”到其他配置。我在想例如的

    可能检查配置的脚本 某种继承机制,如父 pom

我认为这是一个很常见的问题,SO 用户在如何解决不同项目中的这个问题方面有经验。

什么是好方法,什么工具有用?

    带有 pom 包装的父 pom What is "pom" packaging in maven? 主要说明了在多模块项目中使用 pom 打包,但它看起来可以用来为父 pom 提供参考。 parentPath 默认为 .. 参见 Maven: Non-resolvable parent POM。 Maven : Is it possible to override the configuration of a plugin already defined for a profile in a parent POM 中解释了配置的覆盖

移动目标示例

Java8 愚蠢的 javadoc 设置 Maven is not working in Java 8 when Javadoc tags are incomplete How to disable Javadoc warnings in Maven Javadoc Plugin?

【问题讨论】:

如果你在 github 页面上使用 ssh-wagon,你做错了..你能显示你的项目的链接吗?最好是使用Maven SCM Publish plugin 参见文档:maven.apache.org/plugins/maven-scm-publish-plugin/… 顺便说一句:如果您有多个开源项目,为什么不自己创建一个父项目?就像我做github.com/khmarbaise/smpp 一样?然后你可以使用那个父级.... 您写的想法:The plugins used are IMHO a "moving target". Something that worked a few months ago in my ... 您是否在 pom 文件中定义了所有使用的插件及其适当的版本?这是唯一能解释你的句子的情况? @khmarbaise - 感谢您对此进行调查。我已经更新了我的问题 【参考方案1】:

根据khmarbaise 的建议,现在有一个common parent pom。

mvn site

可以用一组通用的报告运行for all projects using this parent pom,并将结果传输到相应的github页面。

一个项目特定的 pom 现在可以be as short as just 25 lines

我现在实际上正在为 pom 文件创建一个检查脚本并为 README.md 文件创建一个生成脚本。这是有用的 sn-ps 之一:

用法示例:

checkghpages https://github.com/BITPlan com.bitplan.simplerest

询问gh页面是否存在并创建

#
# check the github pages for the given project
# 
# param 1: base url in github
# param 2: project name/directory
#
checkghpages() 
  local l_baseurl="$1"
  local l_project="$2"
  cd $ws/$l_project
  git ls-remote --heads | grep gh-pages > /dev/null
  if [ $? -ne 0 ]
  then
    color_msg $red "github pages branch gh-pages missing for $l_project"
    color_msg $blue "shall i create the branch gh-pages for $l_project?"
    read answer
    case $answer in
      y|Y|yes|Yes|j|Ja) 
        color_msg $blue "creating gh-pages branch for $l_project ..."
        cd /tmp
        # https://gist.github.com/ramnathv/2227408
        git clone $l_baseurl/$l_project
        cd $l_project
        git symbolic-ref HEAD refs/heads/gh-pages
        rm .git/index
        git clean -fdx
        echo "<a href='$l_baseurl/$l_project'>Initial GitHub Page for $l_project</a>" > index.html
        git add .
        git commit -a -m "First pages commit by checkos script"
        git push origin gh-pages
        cd $ws/$l_project
        git pull
      ;;
    esac
  else
    color_msg $green "github pages branch gh-pages for $l_project exists✓"
  fi

【讨论】:

以上是关于检查 pom.xml 以符合 github 页面的 mvn site 命令的主要内容,如果未能解决你的问题,请参考以下文章

是否可以添加检查所有子模块是否具有与父 pom 中定义的相同版本?

Springboot项目中Pom.xml报错

我想从 Github Actions 中的 pom.xml 获取项目版本

在 pom.xml 中覆盖用于上传的存储库

基于ssm框架没有pom.xml正常吗

在 maven pom.xml 中更改传递依赖项的版本