对依赖的管理是maven的一个重要的功能. 依赖又分为间接依赖和直接依赖. 比如项目a, 依赖jar包b, b又依赖c, 在加入jar包b的依赖的时候, maven会自动加入对jar包c的依赖. 这个就是所谓的传递性依赖, 而不用我们自己去指定. 这个为我们构造开发环境带来了不少便利.
目前我碰到了两个依赖的问题:一个是关于aspectj的依赖, 一个是关于仓库中pom.xml文件未设置依赖关系导致依赖失败.
关于aspectj依赖的问题,
这里(http://guoyong.org/2009/04/24/365)有一个解决方案, 原来跟maven-eclipse-plugin的版本有关.在2.6版本里面, 这个版本要求eclipse安装aspectj的相关插件(貌似是这样, 我没有试验^_^), 这样就不需要在eclipse java工程的.classpath中添加aspectj的一些依赖了.
还有一次碰到一个很奇怪的问题, 在我的一个eclipse java工程里面有些jar包maven死活没有帮我建立传递性依赖(具体表现是在.classpath文件中没有加入传递依赖的classpathentity, 导致运行时出现NoClassDefFoundError异常). 而有些jar则没有这个问题, 经过分析之后, 终于发现问题所在, 原来maven建立依赖关系是根据仓库里面与jar包所在的同级文件夹下的pom.xml文件来建立依赖的, 最初以为是根据jar里面的META-INF里面的pom.xml文件建立依赖关系, 后来发现我错了:(.因此我们在将jar提交到maven仓库的时候, pom.xml文件的依赖正确设置是非常重要的.
另一个问题跟maven-eclipse-plugin升级之后对java工程文件的位置强制约束有关, 在maven-eclipse-plugin 2.6版本中, maven强制要求src/main/java目录下只能放置java文件, 而所有的配置文件必须放在src/main/resources目录下,
因为通过maven构建的eclipse java工程的.classpath文件中会是这样:
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
而前一个版本中则没有including的要求, 生成的.classpath文件会是这样:
<classpathentry kind="src" path="src/main/java"/>
这样导致编译输出的classes目录下只有java, 而没有非java文件.解决办法是指定一下maven-eclipse-plugin版本:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.5.1</version>
</plugin>
这个只是一个权宜之计, 问题不是很严重(主要是测试的时候会出现找到指定的文件), 按照maven的要求来放置文件才是最合理的做法.
分享到:
相关推荐
针对对初学者使用maven的遇到的问题的一些讲解 和学习的总结
有关于当安装maven成功后javaweb会出现几个乱码问题,都会解决。 想解决java中文乱码问题也得了解一下我们常用的编码方式: ASCII编码是目前计算机中用得最广泛的字符集及其编码。 ISO8859-1可以表示的是西欧语言。...
初衷想法:在学习过程中遇到比较有趣的问题、然而花了点心血和时间去整理,然而进行梳理出来一份文章比较完整有知识体系的DevOps自动化构建与部署工程文章,技术知识内容比较多,而且文章内容较长,然而分了几个章程...
自己学习并应用Spark一段时间后,由于需要改源代码,就研究了下怎么编译源码,成功编译后,记录下了编译的步骤和遇到的问题,例如编译过程中,下载大量的依赖包,默认从国外下载,非常慢,可能要编译好几个小时,...
初学者的福音,最近一直在折腾springboot版本的问题,发现在集成三方库时v2和v3版本...后续有时间再整理几个springboot3集成不同中间件的工程和教程,如mybatis, redis等。如工程有问题可联系博客在主页上私信留言。
Intellij idea是一款非常强大的编辑器,可以很方便地帮我们创建maven项目,有用过的同学应该都深有体会,但我们经常会遇到一个困扰,那就是用idea创建maven项目时,速度很慢,往往需要好几分钟的时间,有时甚至会卡...
主类在GeneratorMain,只要指定几个关键点,输出路径,输入表名,上级包名,就能生成代码后,直接复制到工程中,生成类中结构清晰,注释完整。 /** * 生成演示 */ public static void main(String[] args) { ...
项目中遇到此需求,网上搜罗各种资料,都没有100%解决问题,要么丢字符,要么格式错乱,要么乱码,潜心攻克几天,终于找到完美方案,现分享给各位同仁; 基于apache pdfbox库实现Java PDF转图片,带源码和pom文件;...
整个系统分为以下几个功能模块: 1)运动信息查询:可以查询户外运动的时间,地点,运动性质以及所参加运动 活动的人员更加的方便。 2)会员信息查询:管理员可以对会员进行统计以及删除操作。以便管理员可以 及时...
整个系统分为以下几个功能模块: 1)运动信息查询:可以查询户外运动的时间,地点,运动性质以及所参加运动 活动的人员更加的方便。 2)会员信息查询:管理员可以对会员进行统计以及删除操作。以便管理员可以 及时...
java工程师面试题大全-100%公司笔试题你都能碰到几个.docx Java开发工程师上机笔试题.docx Java开发求职面试题.docx Java开发笔试题.docx Java数据结构类面试题.docx Java数据结构题.docx Java笔试面试宝典.docx ...
前几天看到一个反人类音量滑动条设计的有趣帖子原帖地址,网友设计了各种反人类的滑动条(这些脑洞我是服气的!),于是我抽空在 android 上面实现了一个其中比较有趣的设计,点击喇叭弹射出去圆点控制音量。在写这个...
Coroutines项目具有几个明显的优势: 保存和加载方法状态比Javaflow 更快提供Maven,Ant和Gradle插件 提供一个Java代理 正确支持Java 8+字节码 正确支持同步块 正确支持序列化和版本控制 模块化的项目结构和代码...
前前后后写了不下十几个,慢慢的就想是不是可以把这些爬虫代码再抽象出来,做出一个简易的爬虫框架呢?于是就尝试去看WebMagic的源码,后来又发现了一个源码比较容易解读的爬虫框架XXL-CRAWLER,简单的分析了源码之后...
很多时候项目中需要实现双层Viewpager嵌套效果,但是我做过几次都是遇到各种各样的问题,这个项目使用一个Viewpager,加上计算控制显示来实现双层嵌套效果,供有需要的同学使用。 文章地址: 效果展示 apk下载地址:...
MoonUtil是一个的java工具库,也是在这小几年的工作中所遇到的问题的一个归纳,同时实际工作中解决了一些实际问题,从而使一些常用的操作通过静态方法封装提高希望能在实际应用中帮助到更多人,和得到更多人的帮助和...
- 记录一些在开发过程中遇到的一些问题,总结开发技巧 **接下来,会以需求和设计方式来阐述** # 效果图 - 首页展示 ![image-20210105234019598](pic/image-20210105234019598.png) - 文章编辑 ![image-...
近几年Lambda表达式风靡于编程界。很多现代编程语言都把它作为函数式编程的基本组成部分。基于JVM的编程语言如Scala、Groovy及Clojure把它作为关键部分集成在语言中。而如今,(终)Java 8也加入了这个有趣的行列。 ...
这个时候,我们总是会遇到这些问题: 老大,接口文档还没输出,我的好多活干不下去啊! 后端小哥,接口写好了没,我要测试啊! 测试时间不够啊,就要发版了,今天难道我有看明天的太阳升起? 诸如种种,就是一句...
而这次Hadoop在Mac上的安装费尽周折,并且遇到网上没有先例的问题(由于编译版本不同)、包括Hadoop2.2.0源码中的许多bug。 在此将我的安装过程记录下来,或许对后人有用。 环境: MacOS-10.14, java-1.7.0_80, cmake...