maven - 检查 pom.xml 以符合 github 页面的 mvn site 命令
问题描述
当尝试将我的开源项目发布到 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为什么我收到 Maven 错误:“无法确定 http://maven.glassfish.org/content/groups/glassfish 中是否存在资源 X”?
问题
- 如何强制 GitHub Pages 构建?
- Maven:报告插件 org.apache.maven.plugins:maven-project-info-reports-plugin 有一个空版本
- Maven:什么是插件管理?
- 多模块 POM - 创建一个有效的站点
- 与 Maven 父/子插件配置继承作斗争
甚至没有提到我必须用于 ssh-wagon 和 Java8 javadoc 等的解决方法
恕我直言,使用的插件是“移动目标”。根据我的经验,几个月前有效的东西今天不会有效。所以我一直在修复我的 pom.xml 文件以跟上并且文件变得越来越长。
参见例如https://github.com/BITPlan/com.bitplan.simplerest/blob/master/pom.xml
对于我的内部项目,我使用父 pom 来确保项目具有通用配置。对于开源项目,我还没有找到将父 pom 用于一组项目的方法。
我想确保我找到的工作配置被“转移”到其他配置。我在想例如
- 一个可能检查配置的脚本
- 某种继承机制,例如父 pom
我认为这是一个非常普遍的问题,并且 SO 用户有关于如何在不同项目中解决此问题的经验。
什么是好方法,什么工具有用?
- 带有 pom 包装的父 pom maven 中的“pom”包装是什么? 主要说明了在多模块项目中使用 pom 打包,但看起来它可以用来为父 pom 提供参考。parentPath 默认为 .. 参见Maven: Non-resolvable parent POM。Maven中解释了配置的覆盖:是否可以覆盖已经为父 POM 中的配置文件定义的插件的配置
移动目标示例
- Java8 愚蠢的 javadoc 设置
解决方案
正如khmarbaise所建议的,现在有一个共同的父 pom。
mvn site
可以使用此父 pom和一组通用报告为所有项目运行,结果将传输到相应的 github 页面。
一个项目特定的 pom 现在可以短至 25 行
我现在实际上正在为 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="$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
}
推荐阅读
- python - 插入、更新和保存有什么区别?
- swift - 实现 PHPhotoLibraryChangeObserver 的结构
- java - 无法在 NetBeans 程序中构建 jar 文件
- javascript - 使用 vue 将数据传递到下一个路由
- javascript - 根据数组中的“数据标题”属性生成跨度内容
- google-bigquery - 标准 SQL;自定义查询日期参数数据工作室
- javascript - 双击事件在 D3 版本 6.1 上不起作用
- swift - 如何通过 swift build 使用本地包
- javascript - 正确修改从游戏中提取的文本并将其返回
- python - 更改 python 代码以摆脱 exec() 和 eval()