检查pom.xml是否与github页面的mvn site命令兼容

时间:2018-08-19 08:46:20

标签: maven github-pages maven-site-plugin

当尝试使用

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

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

学习后

这是我发现的一些先决条件和遇到的问题:

先决条件

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

问题

甚至没有提及我必须用于ssh-wagon和Java8 javadoc等的解决方法

使用的插件是恕我直言的“移动目标”。根据我的经验,几个月前起作用的东西今天将不起作用。因此,我不断修复pom.xml文件以保持更新,并且文件越来越长。

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

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

我想确保我找到的有效配置已“转移”到其他配置。我在想的

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

我认为这是一个非常普遍的问题,SO用户在不同项目中都有解决该问题的经验。

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

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

移动目标的示例

1 个答案:

答案 0 :(得分: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文件生成脚本。这是有用的摘要之一:

用法示例:

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
}