本文适用于macos下用sbt publish akka卡在ScalaDoc diagrams not generated!阶段的问题。
说在前面:
如果认为scaladoc这部没必要,那么直接
sbt -Dakka.scaladoc.diagrams=
就可以了,本文基于需要生成scaladoc的情况下。
基本思路:
1、正确安装并配置sphinx
2、正确安装graphviz
3、编译akka需要先clean
首先确保brew已安装,详见
http://brew.sh/
截至本文发布时,安装brew的脚本为:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
1、正确安装sphinx
详见此文:
https://segmentfault.com/a/1190000004234850
注意需要首先安装mysql,再安装sphinx。sphinx安装好之后需要配置和测试,上面链接已经详细写出,在此不再赘述。
然后安装sphinx-build
sudo easy_install sphinx
验证安装成功与否:
which sphinx-build
如果有打印结果应该就是成功了。
2、正确安装graphviz
终端内执行
brew install graphviz
但是我安装的时候遇到了brew无法link的问题。请在安装完务必注意一下brew打印的日志。出现无法link的时候会有红色字体标出。看看是哪个文件夹出现问题。
比如我安装的时候出现libpng无法被link,提示/usr/local/share/man/man3 Permission Denied; graphviz无法被link,提示/usr/local/share/man/man7 Permission Denied.
于是检查一下
cd /usr/local/share/man/
ls -l
发现man3 man7的权限都是root:wheel, 而brew的权限是当前用户权限(brew不允许sudo)。
所以在这里chown一下
sudo chown 用户名:admin man3
sudo chown 用户名:admin man7
然后让brew重新走link的步骤(或者重装)
万能的重装
brew remove graphviz
brew remove libpng
brew install graphviz
(libpng为graphviz的依赖,所以无需手动安装)
为了确保graphviz正确安装,可以which dot
如果打印了
/usr/local/bin/dot
应该就是成功了,也可以试试用dot画个图。怎么画可以上网找graphviz的教程。
3、clean then publish
这个地方我也是偶然发现,因为sphinx、graphviz都验证无误了,为什么还是无法publish?
然后我就重新clone了一个最新版本的akka,然后sbt publish, 发现居然成功了,那么为啥之前的失败?忽然想到从来没有clean(算是坏习惯吧?但是clean会废弃以前所有的编译结果,造成编译时间超级长);
于是回到老的akka
sbt clean publishLocal
10分钟后,succeed……
好吧,我输了。
希望能帮上同样需要生成scaladoc的朋友。