检查 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 中定义的相同版本?