背景:

马上跨年了,记得小时候元旦都不是事儿,怎么长大了长大了感觉越来越热闹了反而。各种饭局、各种party,有点hold不住。还是回来整理一下这一年的笔记比较舒服,比较有收获。看了看这个月竟然发文量还不足四篇,遂将Evernote中的一篇老文贴出来水一下,赶巧解决一下之前网友邮件中遇到的相关问题。

dcm4che开源项目:

dcm4che3是github上的开源项目,是java实现的DICOM开源库,采用Maven进行构建。整个工程在Windows文件系统下直接mvn install可以顺利成功。但是导入到Eclipse Mars版本中后出现如下错误:

解决方案:

官方参考资料

该问题出现的原因是m2e eclipse plugin for maven插件不支持pom.xml文件中的execution

maven依赖项的作用域

在定义项目的依赖项的时候,我们可以通过scope来指定该依赖项的作用范围。scope的取值有compile、runtime、test、provided、system和import。
compile:这是依赖项的默认作用范围,即当没有指定依赖项的scope时默认使用compile。compile范围内的依赖项在所有情况下都是有效的,包括运行、测试和编译时。
runtime:表示该依赖项只有在运行时才是需要的,在编译的时候不需要。这种类型的依赖项将在运行和test的类路径下可以访问。
test:表示该依赖项只对测试时有用,包括测试代码的编译和运行,对于正常的项目运行是没有影响的。
provided:表示该依赖项将由JDK或者运行容器在运行时提供,也就是说由Maven提供的该依赖项我们只有在编译和测试时才会用到,而在运行时将由JDK或者运行容器提供。
system:当scope为system时,表示该依赖项是我们自己提供的,不需要Maven到仓库里面去找。指定scope为system需要与另一个属性元素systemPath一起使用,它表示该依赖项在当前系统的位置,使用的是绝对路径。

【注意】:
参照上述方案,可以顺利解决eclipse导入dcm4che工程后提示的如下错误,

而且可以再eclipse中顺利执行dmc4che的maven编译,因为修改的XXXX/.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml文件其含义就是使得eclipse的maven插件m2e忽略其不能识别的execute以及goal等标签,然而在eclipse主界面中我们可以看到整个dcm4che工程中还存在着上百个错误,提示缺少相关的jar依赖包。

但是在maven完成编译后我们可以看到各个目录下已经生成了相应的jar包,并且已经顺利安装到了本地maven仓库中,那么为何dcm4che下还有诸多工程提示缺少依赖jar包呢?

仔细查看一下我们采用官方参考资料中的解决方案发现,我们忽略的execute以及goal对象仅仅解决了m2e控件的错误提示,然而忽略的这两个execute以及goal(注:其实maven的pom.xml中的execute以及goal就类似于VS中常见的编译后事件,也可以说是一种脚本,用户maven各个子模块编译完成后进行相关的依赖性配置。)恰恰是添加maven各模块依赖性的,因此会导致工程中出现缺少jar包的错误提示。

为了验证这一说法,手动将相应的jar包添加到对应的工程中,发现错误提示减少了,如下图dcm4che-core工程中的除了pom.xml的错误都解决了。

由此可以推断出,官方给出的解决方案仅仅是解决了m2e控件无法识别的pom.xml部分的错误提示,然而在eclipse工程中pom.xml除了启动maven编译时之外跟工程修改、编译、调试没有关系,因此我们主要的目的并非是解决pom.xml的错误提示,而主要应该解决dcm4che工程下各模块的依赖关系的错误提示。那么如何解决了?eclipse的m2e控件无法识别的pom.xml中的execution和goal标签恰恰是maven用来完成dcm4che工程各模块依赖性的?

最佳解决方案:

其实解决方案很简单,之所以eclipse中的dmc4che工程提示缺少jar包的错误,原因并非是dcm4che工程源码中的pom.xml本身编写有误,而是eclipse匹配的maven插件m2e不能顺利识别execution和goal相关字段。
当初选用eclipse的m2e来进行dcm4che工程的编译,其目的就是为了方便,因为m2e在导入maven工程时会自动进行编译。既然m2e控件有问题,那么我们是否可以先用maven工具编译,待编译完成后再用eclipse工具导入呢?

cd c:\dcm4che3-mvn\dcm4che-master
mvn install
mvn eclipse:eclipse

注:本地使用的maven工具版本为3.2.5

上述命令行运行成功后,可以看到dcm4che-master各个工程模块下多了一个.project的eclipse工程文件,此时可以通过eclipse的Import直接导入。导入后仅有几个工程的pom.xml文件提示错误,即上文提到的m2e控件无法识别的execution以及goal标签,但是之前提到的dmc4che各模块缺少jar包的错误全部解决了,可以看到pom.xml中控制各模块依赖性的execution以及goal在mvn eclipse:eclipse时已经顺利执行了(maven工具本身是可以识别execution以及goal的),如下图所示:

解决方案2:

目前我们已经确定了mvn已经顺利编译并生成了各个模块的jar包以及相关代码,之所以提示缺少jar包的错误是因为m2e无法执行配置各模块依赖性的execution,按照错误提示在Eclipse的Marketplace搜索并下载安装相关插件,同样可以解决依赖性问题。

解决方案3:

在StackOverflow上还有一种简单的处理方案,虽然得票率不高,但是从简便性上来说应该是最靠谱的。

Errors occurred during the build.
Errors running builder ‘Maven Project Builder’ on project ‘dcm4che-dict’.
No enum constant org.eclipse.m2e.core.lifecyclemapping.model.PluginExecutionAction.executor
Errors running builder ‘Maven Project Builder’ on project ‘dcm4che-js-dict’.
No enum constant org.eclipse.m2e.core.lifecyclemapping.model.PluginExecutionAction.executor
经过验证后,该方案依然无法实行。

安装完插件后,可以再eclipse中编译调试python脚本,另外在配置插件过程中可以利用其“Quick Auto-Config”来解决之前希望制作python绿色免安装包的目的。

作者:zssure@163.com
时间:2015-12-31

DICOM:dcm4che开源项目导入Eclipse编译错误问题解决方案相关推荐

  1. 开源项目导入eclipse的一般步骤[转]

    下载到开源项目后,我们还是希望导入到eclipse中还看,这样要方便点,一般的步骤是这样的 打开源代码目录, 如果看到里面有.calsspath .project文件,那么说明这个项目本来就是ecli ...

  2. MyEclipse web项目导入Eclipse,详细说明

    转载自   MyEclipse web项目导入Eclipse,详细说明 最近导入一个MyEclipse的项目,具体是:spring4.1的web项目,同时遇到了一些问题,总结一下. 1.进入项目目录, ...

  3. 如何将MyEclipse项目导入eclipse

    我们经常会在网上下载一些开源项目,或者从别的地方迁移一些项目进来,但经常会发现导入后各种报错.这是初学java肯定会遇到的问题,本文对一些常见的处理方案做一个总结.(本文将MyEclipse项目导入e ...

  4. 【转】10个推荐的 PACS/DICOM Server开源项目

    10个推荐的 PACS/DICOM Server开源项目 转自:https://zhuanlan.zhihu.com/p/65437040 soolaugust 喜欢我的分享可以关注公众号:雨夜随笔 ...

  5. 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法

    title: 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法 tags: grammar_cjkRuby: true --- 右键单击项目,properties-- ...

  6. DIOCP开源项目-高效稳定的服务端解决方案(DIOCP + 无锁队列 + ZeroMQ + QWorkers) 出炉了

    DIOCP开源项目-高效稳定的服务端解决方案(DIOCP + 无锁队列 + ZeroMQ + QWorkers) 出炉了 参考文章: (1)DIOCP开源项目-高效稳定的服务端解决方案(DIOCP + ...

  7. android项目模块导入eclipse编译报错,android中studio导入eclipse项目报错怎么办

    android中studio导入eclipse项目报错怎么办 发布时间:2020-07-15 17:34:45 来源:亿速云 阅读:96 作者:清晨 这篇文章将为大家详细讲解有关android中stu ...

  8. java导入项目存在,如何将预先存在的Java项目导入Eclipse并启动并运行?

    我已经是一个C程序员了很长一段时间,但我是Java的新手,也是Eclipse的新手.我想使用 touch graph "Graph Layout" code来显示我正在使用的一些数 ...

  9. JavaEE学习08(解决项目导入eclipse后项目中的红错号)

    解决项目中的红错号 一.出错如图所示 二.解决步骤 三.解决项目包红错号(代码没报错) 四.解决java compiler level does not match the version of th ...

最新文章

  1. 安装网关报mysql服务ini_linux 操作系统下ORACLE数据库使用透明网关连接MYSQL
  2. [Android1.5]打开多个Activity,返回到第一个Activity的问题
  3. 开启云原生 MOSN 新篇章 — 融合 Envoy 和 Golang 生态
  4. input发送a.jax_JAX-RS 2.0:自定义内容处理
  5. 通信中的频谱效率与能量效率
  6. Atitit 企业常见100个职能 组织职能 社会职能 政府职能 家庭职能 团队职能
  7. 这回真的要和雅虎再见了 雅虎将转型为投资机构
  8. 125w短波通信距离_陕西烽火通信短波及超短波产品.doc
  9. 【libnice】艰难的meson+ ninja手动编译过,vs2022 v143 debug
  10. Centos虚拟机使用virt-manager创建虚拟机
  11. 大学计算机课程日记,大学计算机实习日记.docx
  12. linux etc xdg,Xdg-menu (简体中文)
  13. 【介绍】全球最大黑客组织:匿名者
  14. 前端CSS核心内容浮动
  15. 【测绘程序设计试题集】 试题04 最短路径计算
  16. 2020年日历电子版(打印版)_2020年日历表(竖版-A4纸打印版)
  17. Docker入门之安装Docker
  18. python-pytorch hello world
  19. 什么?Spring官方推荐的@Transational还能导致生产事故?
  20. FreeBSD的make

热门文章

  1. 地图网站显示实时交通路况信息的原理
  2. 上海工程技术大学计算机专硕,上海工程技术大学2019年硕士研究生调剂公告
  3. 2015-年校内选拔-蓝桥杯C-(A组)赛题-勾股定理
  4. 阿里云服务器CPU超分型专有宿主机创建v5实例
  5. 2021年氯化工艺实操考试视频及氯化工艺考试试题
  6. python幂指数_幂指数 python
  7. 红旗Linux开发商中科红旗倒闭
  8. 秒懂什么是工业网络网关?
  9. ecno是什么的缩写_号码的英文缩写是什么
  10. 麦克斯韦方程组学习心得与记录