请教一个eclipse中maven项目:父子依赖问题

hzhj91 发布于 02/14 19:26
阅读 119
收藏 0

背景:
一个maven的聚合项目,在父项目的pom里通过<modules>引入了几个子项目。
在eclipse里,一个java文件会同时出现在子项目和父项目里。

问题:
葡京彩票_[开户赠金]有一个java文件,在子项目中正常,但是在父项目里的java文件中,找不到代码中用到的jar,比如说fastjson,显示红色报错。
原因是,fastjson只定义在了子项目的pom中,没有定义在父项目的pom中,导致父项目的maven dependency中没有这个jar。

而我又不想把这个缺少的fastjson的申明定义在父项目的pom里,那么如何能让父项目不报错呢?

加载中
0
hzhj91
hzhj91

葡京彩票_[开户赠金]谢谢关注,问题解决了,我总结一下。
这个问题实际上是eclipse的设置问题,项目的打包和运行都没问题。
葡京彩票_[开户赠金]之所以父项目会报错,是因为eclipse认为父项目里的java文件需要编译,而父项目的maven dependency下没有这个jar。
因此,只要把父项目的classpath下的子项目的java文件移除,就不再去检查jar包是否存在,也就不报错了

0
chentao106
chentao106
代码里依赖了,pom就得要声明。不知道题主为什么不想在父项目中依赖(甚至不明白为什么父项目还会有代码而不是pom类型),如果只是单纯的不想打包或传递依赖,依赖scope为provided或者optional为true就好。
0
hzhj91
hzhj91

引用来自“chentao106”的评论

代码里依赖了,pom就得要声明。不知道题主为什么不想在父项目中依赖(甚至不明白为什么父项目还会有代码而不是pom类型),如果只是单纯的不想打包或传递依赖,依赖scope为provided或者optional为true就好。

葡京彩票_[开户赠金]因为这一个jar只是某一个子项目中使用,所以想在子项目中申明,放在父项目中太臃肿。

父项目里没有java代码,是同一份java代码在父子项目里同时显示了,对应的硬盘上的同一个文件。

实际上这样写,打包编译运行都没有问题,只是eclipse上的父项目的classpath下没有这个jar,所以会报错, 葡京彩票_[开户赠金]现在就是不知道如何把这个jar添加到父项目的classpath下。

那么退一步,不考虑父项目的pom臃肿的问题,就把这个jar的申明放在父项目的dependency里(scope=provided, optional = true ),会发现父项目的classpath下有这个jar,不报错了,然而又有新的问题:打包后,这个jar会出现在所有子项目中,实际只想让它出现在某一个子项目中

chentao106
chentao106
我觉得你对eclipse和maven的使用,或者工程结构有大问题。正常父项目是一个pom工程,不会有代码,打包也不会有jar更不会有代码。
返回顶部
顶部

页面底部区域 foot.htm