Java学习之Maven

    xiaoxiao2023-11-19  174

    一、Maven

    1. 依赖管理

    传统的crm项目的jar包是在项目中maven开发的crm项目的jar包没有存储在项目中,而jar包存储在jar包仓库中,项目中仅保留了jar包的坐标,保存坐标的文件就是pom.xml当使用maven时,maven会首先去本地仓库寻找jar包,如果没有,在联网的状态去会自动去中央仓库下载jar包

    2. 安装

    首先去官网下载apache-maven-3.6.1-bin.zip压缩包下载完成后将压缩包解压到没有中文路径的目录下设置环境变量:maven的运行是要依赖Java的,所以一定要确保环境变量中有JAVA_HOME 验证是否安装成功:mvn -v

    3. maven项目标准目录结构

    src/main/java目录:核心代码部分src/main/resources目录:配置文件部分src/test/java目录:测试代码部分src/test/resources目录:测试配置文件src/main/webapp目录:放置页面资源,包括js、css、图片资源等

    二、常用命令

    清除项目编译信息,也就是删除target目录,在重新编译前执行 mvn clean 编译 mvn compile 编译测试代码部分 mvn test 打包:打包会将main目录下的代码和test目录下的代码都进行编译 mvn package 安装:install命令会将项目进行打包,并将打包后的文件安装到本地仓库 mvn install 发布 mvn deploy

    三、Maven配置

    在conf/settings.xml中配置本地仓库路径 在idea的settings中搜索maven,进行配置

    四、创建maven项目

    1. 使用骨架构建maven项目

    进入idea界面,选择Create New Project,并选择创建maven项目,并按照下图进行选择 填写项目相关信息 之后一直点击Next,直到项目被idea打开进入idea之后,右下角会有选择Import Changes,点击导入,idea会自动下载项目所需的jar包使用骨架创建的项目是没有resources目录的,需要手动去创建,并将目录设置为配置文件目录,详见下图

    2. 不使用骨架构建maven项目(推荐使用)

    不使用骨架,就是在创建的时候直接点击Next 之后的方式都跟使用骨架一样,直到idea打开项目项目打开后,Import Changes最后可以看到项目的目录结构就已经创建完成了,与骨架创建的不同,不使用骨架的时,项目是自带resources目录的,详见下图

    3. 配置项目依赖jar包

    打开pom.xml文件,该文件用于存放jar包的坐标首先先写一个dependencies标签,在这个标签内部可以写多个dependency标签,每一个dependency标签就是一个jar包的坐标,在dependency标签内部根据idea提示将所需jar包的信息补充完整 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>1.3</version> </dependency> </dependencies> 如果jar包找不到,可以百度“maven中央仓库”,在仓库中搜索jar包,选择任意版本,找到jar包的坐标,并复制到pom中

    4. 解决jar包冲突

    在pom.xml中使用scope标签,使jar包仅在写代码时生效,项目正式运行的时候不生效 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <!--仅在写代码时生效--> <scope>provided</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>1.3</version> <scope>provided</scope> </dependency> </dependencies>
    最新回复(0)