前一篇博文DICOM:开源DICOM服务框架DCM4CHE 安装中介绍了一款开源DICOM服务框架DCM4CHE,对于开源项目学习的流程是先下载二进制可执行包安装,然后使用测试。在熟悉了大致的功能服务后,从官网下载源代码进行本地构建(Build),进而从根本上了解开源项目的底层框架设计,为后续修复、扩展做准备。本博文是继DCM4CHE安装后的续篇,讲解如何在本地构建DCM4CHE开源项目,文中尽量做到全面,但是由于刚开始接触J2EE领域,且多半都是自学,因此博文中还留有部分未解问题,如有熟悉的博友还望不吝赐教。
如DICOM:开源DICOM服务框架DCM4CHE 安装所述,dcm4chee整体包含多个模块,各模块编译、连接会用到各种第三方工具。因此在构建dcm4chee之前需要下载并安装所需的工具,现总结各工具包配置表如下,
工具 | 版本 | 下载链接 | 安装 | 配置 | 备注 |
Ant | 最新版 | http://ant.apache.org/ | 下载安装包后,直接解压到同一安装路径下即可,例如本机路径设置为: c:\dcm4chee\thirdlibrary\apache-ant-1.9.3 |
要想在系统中运行ant,需要进行环境变量配置。例如本机Win7 64位系统环境变量配置方式为: 1)右键“计算机” 2)选择“属性” 3)选择“高级系统设置” 4)高级标签页,选择“环境变量” 5)系统变量栏目下,“新建”,输入: 变量名:ANT_HOME 变量值:c:\dcm4chee\thirdlibrary\apache-ant-1.9.3. 最后确定即可。 编辑Path变量,添加%ANT_HOME%\bin |
在设置环境变量时需要注意:ANT_HOME变量值最后不能有“\"(Windows系统),或者"/"(Unix/Linux系统)。 |
XDoclet | 最新版 | http://xdoclet.sourceforge.net/xdoclet/install.html | 下载安装包后,直接解压到同一安装路径下即可,例如本机路径设置为: c:\dcm4chee\thirdlibrary\xdoclet-1.2.3 |
无 | 无 |
ApacheFOP | 0.95 | http://www.apache.org/dyn/closer.cgi/xmlgraphics/fop | http://xmlgraphics.apache.org/fop/quickstartguide.html 官方文档中提到了Download、Install、Configuration等步骤,这里只需要下载二进制安装包,解压即可,本机目录为: c:\dcm4chee\thirdlibrary\fop-0.95 |
按照上述步骤添加FOP_HOME环境变量, 变量名:FOP_HOME 变量值: c:\dcm4chee\thirdlibrary\fop-0.95 编辑Path变量,添加%FOP_HOME%\bin |
1)目前Apache FOP官方镜像网站很难找到FOP0.95老版本,可在CSDN中下载: http://download.csdn.net/detail/wssmao/663634 2)同上,FOP_HOME变量值中最后不能附带”/"或"\" |
Jakarta Cactus | 最新版 | http://archive.apache.org/dist/jakarta/cactus/binaries/ | 直接解压到指定路径即可, c:\dcm4chee\thirdlibrary\cactus-1.8.0-bin |
添加环境变量, 变量名:CACTUS_HOME 变量值: c:\dcm4chee\thirdlibrary\cactus-1.8.0-bin 编辑Path变量,添加%CACTUS_HOME%\bin |
cactus只在编译dcm4jboss-ejb测试用例时使用过,构建dcm4chee过程中其实用不到。 |
JBoss | 4.2.3GA | http://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.3.GA/ | 直接解压缩,例如本机目录 c:\dcm4chee\thirdlibrary\ jboss-4.2.3.GA |
设置环境变量, 变量名:JBOSS_HOME 变量值: c:\dcm4chee\thirdlibrary\ jboss-4.2.3.GA 编辑Path变量,添加%JBOSS_HOME%\bin |
dcm4chee是托管在JBoss AS应用服务器中的应用,因此run.bat脚本需要依赖于JBoss运行时文件,在后续具体构建过程中需要运行install_jboss.bat(Windows系统)或install_jboss.sh(Unix/Linux系统) |
Maven | 最新版 | http://maven.apache.org/download.cgi | 直接解压,例如本机目录 c:\dcm4chee\thirdlibrary\apache-maven-2.2.1 |
设置环境变量 变量名:M2_HOME 变量值: c:\dcm4chee\thirdlibrary\apache-maven-2.2.1 变量名:M2 变量值:%M2_HOME%\bin 编辑Path变量,添加%M2% |
|
dcm4che14 | 1.4 | svn checkout svn://svn.code.sf.net/p/dcm4che/svn/ dcm4che-svn |
最好现在dcm4che14源码,在本机进行构建 | ||
JDK | SE 6 | http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html | 双击运行。 | 设置环境变量, 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.6.0_45,默认安装路径。 编辑Path变量,添加%JAVA_HOME%\bin |
【备注1】:按照官方文档的建议,将上述第三方工具统一安装部署到同一文件夹下,方便管理和配置。例如本文中我设置的统一安装路径为:c:\dcm4chee\thirdlibrary。路径中不能有空格,否则会引起JDK异常。
【备注2】:在修改Path变量时要注意两个问题,第一两个不同的路径之间用英文半角“;”隔开;第二,各个环境变量结尾处同样不应有"\"或"/"
【注意事项】:dcm4chee和maven的配置文件中都会依赖于${user.home},例如在dcm4chee顶级目录中存在Build.property配置文件,maven中conf目录下的setting.xml文件,两者其中都存在${user.home},在windows系统下为了避免出现问题,最简单的方式就是讲两者统一设置成绝对路径。搜索dcm4jboss-all目录下所有文件,包含${user.home}的文件有16个,总共出现67次该变量。
(1)构建dcm4che14:
正如准备环境中的备注所述,dcm4che14不能用Java7进行构建。【注】:具体原因是dcm4che14中使用的dcm2jpg实例用到了com.sun.image.codec.jpeg包,该包在JDK6中开始弃用,到JDK7就完全剥离了。所以无法使用Java7编译,只能使用JDK5或JDK6。一种解决方案就是用JAI ImageIO重写dcm2jpg工具。
计入dcm4chee-arr,输入mvn install -Ddb=mysql.(mvn install -Ddb=<database>,database应该替换成自己选择的数据库,例如我的是mysql)
【官方说明指出】:”第一次构建dcm4chee-arr时会提示失败,缺少avax.transaction./jta/1.0.1B/jta-1.0.1B.jar包,一种折中解决方法是先编译dcm4chee-web,然后再编译dcm4chee-arr,因为dcm4chee-web中会下载avax.transaction./jta/1.0.1B/jta-1.0.1B.jar包。“
【对于Mysql类型的dcm4chee-arr】:在创建arrdb时会失败,尤其是对于MySQL5.5,因为构建脚本ddl中的type=语法已经被弃用,应该改成engine=。修改的文件位置是:dcm4chee-arr/dcm4chee-arr-entities/target/hibernate3/sql/dcm4chee-arr-mysql.ddl
在具体安装过程中,经过多次测试dcm4chee-arr模块编译时并未出现过任何错误。
进入dcm4chee-audit目录下,输入mvn install即可编译通过。
进入dcm4chee-docstore,输入mvn install即可编译通过。
进入dcm4chee-xds-infoset,输入mvn install即可编译通过。
进入dcm4chee-web,输入mvn -Pall -Ddb=mysql install。
【备注1】:dcm4chee-web模块依赖于dcm4chee-arc3-entities, dcm4chee-icons, dcm4chee-web-common, dcm4chee-dashboard, dcm4chee-usr五个模块,要确保以上五个模块与dcm4chee-web目录处在同一目录下。
【备注2】:dcm4chee-web在真实编译过程中会弹出格式各样的错误,诸如缺少jar文件,如下图所示:
【解决方案】:对于该类错误的解决方案如下,手动从http://www.dcm4che.org/maven2/下载相应的jar、sar包,手动安装到mvn本地库中。(可以利用mvn install:install-file命令行参数或者直接在.ms\repository\下建立对应目录直接将包拷贝进入即可)。
【备注3】:在解决了缺少依赖包的错误后,又会出现编译错误。如下图所示:
【解决方案】:对于该类错误,经过了几个周末的尝试我还未找到解决方案。在官方说明文档详细版中有如下提示,
如果dcm4chee-web未构建成功,后续的dcm4jboss-all中的dcm4jboss-sar模块无法通过编译,会出现下文中提到的错误。上图中的提示指出,可以进入dcm4chee-web-dist子目录构建单独的dcm4chee-web包文件,确保后续的dcm4jboss-all能够顺利通过。
dcm4chee-jboss-all目录下有多级子目录,包括:dcm4jboss-build, dcm4jboss-ejb, dcm4jboss-hl7, dcm4jboss-rid, dcm4jboss-sar, dcm4jboss-wado, and dcm4jboss-web。所有该目录下的工程需要使用Ant进行构建,dcm4jboss-build中不包含任何Java源代码,只是起到启动Ant编译的作用,该目录下的是整个dcm4jboss-all的主构建脚本。
【官方说明】:Ant在构建时会搜索两个属性文件,即dcm4jboss-all\build.properties以及dcm4jboss-all\各级子目录\build.properties,第一个属性文件对所有子文件有效。在配置该类属性文档时,主要是告知Ant各种工具包的目录,以及版本号,注意即使使用的是JDK6,也保留配置文档中的javac.source和javac.target为1.5.
为了更清楚的说明(6)和(7)两部分的关系,以表格形式列出其各子模块之间的关系。
项目 | 依赖 | 各模块描述 |
dcm4chee-web | dcm4chee-arc3-entities dcm4chee-icons dcm4chee-web-common dcm4chee-dashboard dcm4chee-user |
dcm4chee JPA Entities,JPA含义见: http://baike.baidu.com/link?url=_PwwR8guVIFgzY14DvavTJ6jMrTHNZoX-G0j59H4sk_O6ot_6nj1iouXl1WAGZayulE2xjuKbshTS0avBvLZ7K 一种通过JDK5或XML注解描述对象-关系表的映射,并将运行时对象持久化到数据库的技术。 dcm4chee-icons:Icon theme for dcm4chee application modules dcm4chee-web-common:web应用的工具集合 dcm4chee-dashboard:报表 |
dcm4jboss | dcm4chee-arr dcm4chee-audit dcm4chee-docstore dcm4chee-xds-infoset |
dcm4chee-arr:audit record repository dcm4chee-audit:Audit Logger,
dcm4chee-docstore:Generic Document Storage dcm4chee-xds-infoset:Infoset classes for XDS,将Java中的注释信息自动转换成配置文档之类的。 |
【备注1】:按照官方说明,在构建dcm4jboss-all时,会出现如下错误,
该错误是由于缺少CAStorSDK-1.3.1-CS40.jar包所致。
【解决方案】:该类错误是由于安装第三方依赖库时错误操作所致。如【构建环境搭建】中说述,诸如ant、maven等工具直接解压到指定目录下即可。并不会用到解压前的jar包文件。但是对于像CAStorSDK、jsch、jcifs三个工具来说需要在该目录下保留相应的jar文件,构建dcm4jboss-all下的dcm4jboss-sar时才能成功。修改完成后,本地构建成功会出现如下图结果:
至此,本地构建dcm4chee的工作顺利完成,当然在构建dcm4chee-web模块时还有部分问题有待进一步研究。
未完待续……
(PS:补充提交图片,之前的图好像挂掉了,2015-04-17)
时间:2015-03-28