检查 pom.xml 是否符合 github 页面的 mvn 站点命令

check of pom.xml to be compliant with mvn site command for github pages

尝试使用

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

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

学习后

以下是我发现的一些必要的先决条件,并将 运行 发布到:

先决条件

  1. git b运行ch 需要显示 gh-pages b运行ch 例如使用 https://gist.github.com/ramnathv/2227408
  2. 中的命令后
  3. maven-site-plugin 和 maven-project-info-reports-plugin 的版本必须正确且配置正确:
  4. dependency.locations.enabled 属性 需要为 false

问题

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

使用的插件是恕我直言"moving target"。根据我的经验,几个月前有用的东西今天就行不通了。所以我不断修复我的 pom.xml 文件以跟上,文件变得越来越长。

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

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

我想确保我找到的工作配置对其他配置来说是 "transferred"。我在想,例如

  1. 可能会检查配置的脚本
  2. 某种类似父pom的继承机制

我认为这是一个非常普遍的问题,并且 SO 用户有关于如何在不同项目中解决此问题的经验。

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

  1. 带有 pom 包装的父 pom What is "pom" packaging in maven? mostly states the use of pom packaging for multi-module projects but it looks it could be used to have a reference for a parent pom. The parentPath defaults to .. see Maven: Non-resolvable parent POM. The overriding of configurations is explained in Maven : Is it possible to override the configuration of a plugin already defined for a profile in a parent POM

移动目标示例

按照 khmarbaise there is now a common parent pom 的建议。

mvn site

可以运行for all projects using this parent pom有一组共同的报告,结果会传送到相应的github页面。

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

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

用法示例:

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

检查gh-pages是否存在,询问后创建

#
# check the github pages for the given project
# 
# param 1: base url in github
# param 2: project name/directory
#
checkghpages() {
  local l_baseurl=""
  local l_project=""
  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
}