`

最近遇到几个maven问题

阅读更多
对依赖的管理是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的要求来放置文件才是最合理的做法.
分享到:
评论

相关推荐

    Intellij IDEA中使用maven filter遇到的问题

    然而,问题可能出现在以下几个方面: - **属性未定义**:如果你引用了一个未定义的属性,Maven将会抛出错误。确保所有使用的属性都在`&lt;properties&gt;`标签内定义。 - **过滤不生效**:如果资源文件没有被正确过滤,...

    maven常见问题及解决办法

    本文将针对几个常见的Maven问题及其解决方法进行详细解析。 #### 问题1:依赖解析失败 **错误信息示例**: ``` [ERROR] Failed to execute goal on project biz_zhuhai: Could not resolve dependencies for ...

    官方下载maven-3.5.4

    在提供的压缩包文件中,我们可以看到以下几个关键文件和目录: 1. **LICENSE**:包含了 Maven 的许可协议,通常为 Apache License 2.0,允许用户免费使用、修改和分发软件。 2. **NOTICE**:通知用户关于软件中...

    有关于当安装maven成功后javaweb会出现几个乱码问题,都会解决

    有关于当安装maven成功后javaweb会出现几个乱码问题,都会解决。 想解决java中文乱码问题也得了解一下我们常用的编码方式: ASCII编码是目前计算机中用得最广泛的字符集及其编码。 ISO8859-1可以表示的是西欧语言。...

    Maven 3.6.3文件 setting文件已替换华为云maven镜像

    2. **稳定性保障**:由于网络环境的不稳定性,有时直接连接中央仓库可能会遇到下载失败的问题。使用华为云镜像可以提高下载的稳定性和成功率。 3. **资源隔离**:企业或组织可能需要对内部依赖进行管理,使用镜像...

    maven-eclipse-plugin

    【maven-eclipse-plugin】是Maven生态中的一个重要插件,它主要负责将Maven项目导入Eclipse这样的IDE中,以便于开发人员进行便捷的开发和管理。...同时,了解Maven的配置和问题排查方法也是每个Maven用户必备的技能。

    ojdbc6 解决maven缺失问题

    然而,有时我们可能会遇到Maven无法找到特定依赖的问题,就像标题所提到的"ojdbc6解决maven缺失问题"。Oracle的ojdbc6驱动是连接Oracle数据库的重要组件,特别是对于使用Oracle 11g版本的开发者来说。在Maven仓库中...

    Maven Web基础搭建示例

    使用Maven创建Web项目,首先需要创建一个标准的Maven项目结构,包括以下几个核心文件和目录: 1. `pom.xml` - 项目对象模型,用于定义项目信息、构建配置以及依赖管理。 2. `src/main/java` - 存放源代码。 3. `src...

    maven内存溢出解决放啊

    在使用Maven进行项目构建时,尤其是在处理大型项目或执行资源密集型任务(如`mvn site`)时,经常会遇到Java堆空间溢出的问题。这类问题通常是由于Maven运行所需的内存超过了系统分配给它的默认内存限制所致。本文将...

    maven 环境搭建

    Maven 解决依赖冲突遵循以下几个原则: 1. **第一声明者优先原则**:当多个依赖中包含相同的 Jar 包时,最先声明该 Jar 的依赖会被使用。 2. **路径近者优先原则**:如果通过 POM 文件手动指定了依赖的版本,那么该...

    maven 最新版 3.6.0 版本

    如果遇到下载依赖慢的问题,可以配置settings.xml中的镜像源,例如使用阿里云或清华大学的Maven镜像,这样可以显著提高下载速度。 总之,Maven 3.6.0是一个重要的更新,它在保持易用性的同时,提升了性能和稳定性,...

    Maven_学习总结_全

    针对对初学者使用maven的遇到的问题的一些讲解 和学习的总结

    maven-archetype-quickstart-1.1.zip

    在"maven-archetype-quickstart-1.1.zip"压缩包中,主要的文件可能包括以下几个部分: 1. **archetype-descriptor**: 这个目录下的文件定义了archetype的元数据,如项目结构和变量,使得Maven知道如何生成新的项目...

    maven-3.6.0-Windows.zip

    Maven的使用包括以下几个关键方面: - **依赖管理**: Maven通过POM文件自动下载项目所需的库文件,避免了手动管理jar包的繁琐过程。只需在POM中声明依赖,Maven会自动解决依赖关系并将其添加到项目的类路径中。 - ...

    Maven指南阅读笔记

    在阅读"Maven指南"的过程中,我们可以学习到几个关键知识点,包括:解决依赖冲突、排除不必要的传递性依赖、处理已提供构件以及利用`dependencyManagement`元素和`parent`元素的区别。 首先,当我们遇到`groupId`和...

    Eclipse使用Maven无法建web项目

    首先,我们需要理解“Eclipse使用Maven无法建web项目”这个问题可能涉及到的几个关键点。在Eclipse中创建Maven Web项目时,可能会遇到诸如Maven插件未安装、 archetype配置错误或者网络问题导致的下载失败等常见问题...

    apache-maven-3.8.4d

    描述中提到了几个关键点,让我们一一深入探讨。 首先,Maven 3.8.4是Maven系列的一个具体版本,它包含了自前一版本以来的改进和修复。Maven项目遵循约定优于配置的原则,这使得新项目的搭建变得简单,因为有预设的...

    maven 资源

    Maven的工作流程通常分为以下几个阶段: 1. **初始化**:设置编译环境,生成默认的POM和构建目录结构。 2. **清理**:删除上一次构建生成的临时文件和目标目录。 3. **编译**:将源代码编译为类文件。 4. **测试**:...

    maven-3.3.9

    4. **生命周期(Life Cycle)**:Maven 提供了一系列的构建阶段,如 compile、test、package、install 和 deploy,开发者可以在这几个阶段之间插入自定义的任务。 5. **插件(Plugins)**:Maven 插件执行具体的构建...

Global site tag (gtag.js) - Google Analytics