Maven 介绍,常见问题

IDEA项目突然提示找不到符号或程序包不存在

今天也遇到同样的问题,搞了好久。
最后发现终端运行:mvn idea:idea

“将ide构建/运行的操作委托给maven”

勾选了下面这个对号就什么问题都没有了
在这里插入图片描述

Maven简介

Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。

Maven安装

JDK要求:1.7+
Maven要求版本:3.5+

Maven 自身安装需要大约 10 MB 空间。除此之外,额外的磁盘空间将用于你的本地 Maven 仓库。你本地仓库的大小取决于使用情况,但预期至少 500 MB

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


Maven使用

Idea中使用Maven

a)Idea中Maven配置

File–>Settings–>搜索Maven
在这里插入图片描述
Maven home directory maven解压后的目录
User settings file maven配置文件
Local repository 本地仓库地址
Work offline 是否启用离线模式

b)打开/创建maven项目

创建maven项目时,可以选择对应的骨架
在这里插入图片描述

c)依赖包引入

当Maven项目初始化,或者pom.xml有改动时,需要重新将依赖包引入,有以下的方式
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
d)Maven生命周期管理

在这里插入图片描述
Validate 校验
Compile 编译
Test 测试
Package 打包
Install 将打好的包上传到本地maven仓库
Deploy 将打好的包上传到远程maven仓库

在这里插入图片描述
闪电表明是否忽略测试


命令使用Maven

maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下。

-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;

-P 指定 Profile 配置,可以用于区分环境;

-e 显示maven运行出错的信息;

-o 离线执行命令,即不去远程仓库更新包;

-X 显示maven允许的debug信息;

-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次。

maven 打包:mvn package
编译源代码: mvn compile
安装项目到本地仓库:mvn install

完整示例:
mvn deploy -Dmaven.test.skip=true


Maven配置

1.	<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
2.	    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">  
3.	  
4.	    <!-- 模型版本。 -->  
5.	    <modelVersion>4.0.0</modelVersion>  
6.	  
7.	    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade -->  
8.	    <groupId>com.winner.trade</groupId>  
9.	  
10.	    <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->  
11.	    <artifactId>trade-core</artifactId>  
12.	  
13.	    <!-- 本项目目前所处的版本号 -->  
14.	    <version>1.0.0-SNAPSHOT</version>  
15.	  
16.	    <!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar -->  
17.	    <packaging>jar</packaging>  
18.	    
19.	    <!-- 定义本项目的依赖关系 -->  
20.	    <dependencies>  
21.	  
22.	        <!-- 每个dependency都对应这一个jar包 -->  
23.	        <dependency>  
24.	  
25.	            <!--一般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入你的工程。如果别人想引用你现在开发的这个项目(前提是已开发完毕并发布到了远程仓库),-->   
26.	            <!--就需要在他的pom文件中新建一个dependency节点,将本项目的groupId、artifactId、version写入, maven就会把你上传的jar包下载到他的本地 -->  
27.	            <groupId>com.winner.trade</groupId>  
28.	            <artifactId>trade-test</artifactId>  
29.	            <version>1.0.0-SNAPSHOT</version>  
30.	  
31.	            <!-- maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。 -->  
32.	            <!--scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围) -->  
33.	            <scope>test</scope>  
34.	  
35.	            <!-- 设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似  -->  
36.	            <optional>false</optional>  
37.	  
38.	            <!-- 屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 -->  
39.	            <exclusions>  
40.	                <exclusion>  
41.	                    <groupId>org.slf4j</groupId>  
42.	                    <artifactId>slf4j-api</artifactId>  
43.	                </exclusion>  
44.	            </exclusions>  
45.	  
46.	        </dependency>  
47.	  
48.	    </dependencies>  
49.	  
50.	    <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->  
51.	    <properties>  
52.	        <file.encoding>UTF-8</file.encoding>  
53.	        <java.source.version>1.5</java.source.version>  
54.	        <java.target.version>1.5</java.target.version>  
55.	    </properties>  
56.	  
57.	    ...  
58.	</project>  


Maven常用命令

clean:删除项目中已经编译好的信息,删除target目录

compile:Maven工程的编译命令,用于编译项目的源代码,将src/main/java下的文件编译成class文件输出到target目录下。

test:使用合适的单元测试框架运行测试。

package:将编译好的代码打包成可分发的格式,如JAR,WAR。

install:安装包至本地仓库,以备本地的其它项目作为依赖使用。

deploy:复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)。

每一个构建项目的命令都对应了maven底层一个插件。
在这里插入图片描述


Maven常见问题总结

  1. Maven jar包下载不下来
    a. 检查settings.xml中的镜像仓库地址,如果是内网地址则用vpn访问公司内网重新下载
    b. 检查是否开启了离线模式
    c. 检查依赖包是否在远程仓库中存在

  2. .lastUpdate解决

出现.lastUpdated结尾的文件的原因:由于网络原因没有将Maven的依赖下载完整导致,需要删除所有以.lastUpdate结尾的文件,

新建 cleanLastUpdated.bat

@echo off
rem create by NettQun
  
rem 这里写你的仓库路径
set REPOSITORY_PATH=E:\hsaRep
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    echo %%i
    del /s /q "%%i"
)
rem 搜索完毕
pause
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值