博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven入门探讨
阅读量:4932 次
发布时间:2019-06-11

本文共 6333 字,大约阅读时间需要 21 分钟。

      java项目最恶心的一点莫过于需要使用大量的jar。每次引用jar的时候都要自己手动去各地寻找,然后导入到项目的指定文件夹当中最后还要添加Path。

这无疑是一项工作量巨大的工作,同时如果控制不当就会提前...就会把项目的结构弄得一团糟还容易造成遗漏。同时项目的所有依赖列表也不是特别直观。
所以maven就是一个这样的管理工具,它一定程度上的将java的项目规范化,并对依赖进行统一管理。

 

1.windows下maven的安装:

[1]安装maven首先要确保已经安装了jdk,配置环境变量(有系统变量JAVA_HOME),并保证其版本可以使用。(Maven的版本越新,所需要的jdk版本也越高,如果不能正常安装和使用,那么请安装更高版本的jdk)
·下载地址:http://maven.apache.org/download.cgi

[2]maven寻找java的安装目录是在系统变量里边寻找JAVA_HOME,同理,要让别的工具能找到maven的安装目录,一般需要添加添加 M2_HOME 和 MAVEN_HOME并将其指向你的 Maven 文件夹。(不一定必要,如果其他工具未识别maven那么需要检查。此外maven有时候会用 m2 的命名规范。)

 
[3]为了方便命令行使用和一些其他工具的集成,也需要将bin目录添加到系统path中。

 

[4]在命令运行mvn -version 来测试是否安装成功。

 

 

2.设置代理服务器

      因为maven需要连接互联网通过HTTP协议来下载响应的依赖包。所以如果公司存在防火墙那么就会阻止maven下载依赖包。为了使它工作我们需要在maven的配置文件中设置代理服务器。
参考:
http://www.yiibai.com/maven/enable-proxy-setting-in-maven.html

 

3.资源库:

      使用Maven来管理项目首先就要为所有的依赖包提供来源。除了maven的中央资源库外,有的时候还需要本地资源库的使用。
3-1.本地资源库:
      当一个maven项目创建后,所有的下载好的依赖包会默认的存储在一个位置。(这个默认地址可以通过修改setting.xml来更改)
默认地址:
Unix/Mac OS X – ~/.m2
Windows – C:\Users\{your-username}\.m2

3-2.中央资源库

      当你建立一个Maven的项目,Maven会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven将从本地资源库获得Maven的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven中央存储库 – http://repo1.maven.org/maven2/ 查找下载

3-3.远程仓库

      资源寻找顺序:
      本地资源库->中央资源库->远程仓库
      配置远程仓库:

jar包

       
org.jvnet.localizer
       
localizer
       
1.8

 

jar所依赖的远程地址

 
    
java.net
    
https://maven.java.net/content/repositories/public/
 
   
     
java.net
     
https://maven.java.net/content/repositories/public/
   

注:一般的资源都能在远程的中央存储库当中找到,有的包在中央存储库遗失了。主要有上述两个远程仓库来补充。

 

3-4.依赖机制

  自动下载和更新所必需的依赖库。

(测试范例:log4j日志)

【传统方式】
[1] 访问 http://logging.apache.org/log4j/
[2] 下载 Log4 j的 jar 库
[3] 复制 jar 到项目类路径
[4] 手动将其包含到项目的依赖
[5] 所有的管理需要一切由自己做
如果有 Log4j 版本升级,则需要重复上述步骤一次

【maven:管理使用】

[1]直接声明到pom文件即可

   
 
log4j
 
log4j
 
1.2.14
   

 

(如果版本号被忽略,则为自动升级,关于log4j的入门使用,请参考另一篇文章。)

3-5.自定义

      有的时候项目会用到一些三方的包,这些包在中央库和远程仓库可能都没有,这个时候就需要自己创建本地依赖仓库将需要的jar手动的导入到相关的本地仓库中。
一般对于公司而言,公司最好自己建一个本地个人仓库,将自己所开发的或者所需要的三方包存储在上边,需要的时候直接获取坐标即可(参考http://www.cnblogs.com/friends-wf/p/3804377.html  by wf110)。如果你只是想本地调试、学习或者没有网络,那么可以试试下面的方法。
[1]直接在pom.xml文件中设置坐标(这个坐标要不和网上中央资源库的坐标冲突,否则就会下载远程库了),比如

     
com.rock.code
     
rocktools-1.0
     
1

 

[2]上述的坐标在资源库肯定下载不到的,所以铁定报错了。不过不要紧,通过错误信息我们可以看到,他会提示你在xx/xx/xx/xx/xx文件夹下缺少xx文件。这好办,自己按照错误提示把jar塞进去就可以了。(本地资源库位于c:users/{username}/.m2/...)

上例错误信息:The container 'Maven Dependencies' references non existing library 'C:\Users\yf\.m2\repository\com\rock\code\rocktools-1.0\1\rocktools-1.0-1.jar'

[3]塞进去的时候,修改一下jar的名字,改成xxx-{version}.jar的格式(和上述报错信息吻合即可,比如本例,只要保证jar的名字是rocktools-1.0-1.jar,放到"C:\Users\yf\.m2\repository\com\rock\code\rocktools-1.0\1\"文件夹下即可)。

[4]右键项目 Maven->update project...

4.创建maven项目
[1]cd到想要创建项目的目录,然后执行mvn archetype:generate
创建过程中可能比较慢,需要耐心等待。此外不要键入一些七七八八的东西,会被压到命令行的队列中的- -~
开始创建项目的时候输出是这个样子的:(需要键入的地方已用【】内标出)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 864:  【1.一般使用默认的代码,直接回车】

Choose org.apache.maven.archetypes:maven-archetype-quickstart version:

1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6: 【2.使用最新版本,直接回车】Define value for property 'groupId': : rockderia【3.键入包名】
Define value for property 'artifactId': : testrock【4.键入项目名】
Define value for property 'version':  1.0-SNAPSHOT: :【5.版本号 默认。直接回车】
Define value for property 'package':  rockderiaone: :【6.项目打包后jar的名称】
Confirm properties configuration:
groupId: rockderiaone
artifactId: com.rock
version: 1.0-SNAPSHOT
package: rockderiaone
 Y: :【7.键入回车确认】
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: F:\maven_projects
[INFO] Parameter: package, Value: rockderiaone
[INFO] Parameter: groupId, Value: rockderiaone
[INFO] Parameter: artifactId, Value: com.rock
[INFO] Parameter: packageName, Value: rockderiaone
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: F:\maven_projects\com.rock
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:47 min
[INFO] Finished at: 2016-09-26T16:40:39+08:00
[INFO] Final Memory: 14M/222M
[INFO] ------------------------------------------------------------------------
看到BUILD SUCCESS 说明项目创建成功。

[2]上述的maven项目可以直接用eclipse导入,前提是eclipse安装了maven插件。方法是file->import->Maven->Existing Maven Projects

一般而言对于一个新的maven项目首先就要处理的就是更新一下pom.xml文件。新的maven项目只有下述一个依赖,这个junit的版本一般是落后的可以更改版本号来测试更新。此外还可以自己添加对应的依赖坐标。比如拿经常会用到的org.apache.log4j来做测试即:

   
     
junit
     
junit
     
3.8.1
     
test
     
log4j
     
log4j
     
1.2.14

 

注:原始的依赖有一个scope属性,如果设置为test的话可能会导致在main文件夹中的文件执行的时候无法找到对应的jar而报错。建议先不写这个scope。更多请参考http://blog.darkmi.com/2011/03/15/1653.html by darkmi

[3]jdk版本配置。

一般新导入的新项目都会获得一个J2EE-SE5什么的警告。貌似是说编译器没找到相应版本的jre。maven默认的jdk版本貌似的1.5?天啦噜。不过不要紧,只要在pom.xml追加一些配置就可以更改相应的jdk版本。

     
         
             
org.apache.maven.plugins
             
maven-compiler-plugin
             
                
1.8                
1.8
             
           
     
 

 

同时,右键点击项目选择:Build Path-> configura build path -> Java Compiler 选择将版本也换成上述已配置的版本(1.8)即可。

注:如果设置完坐标出现“Failed to read artifact descriptor for xxx:jar ”的错误。这可能是在下载过程中文件出现了错误。

解决办法:从本地的maven库中删除相关的jar包,右键项目 Maven->update project... 并勾选“Force Update Of Snapshots/Releases"
然后点击“OK”。这样就会重新下载这个jar包。

转载于:https://www.cnblogs.com/AkazaAkari/p/5962068.html

你可能感兴趣的文章
WebIM(5)----将WebIM嵌入到页面中
查看>>
Datagridview列绑定数据
查看>>
[转]如何高效利用GitHub
查看>>
lougu P1048 采药 | 01背包
查看>>
Maven小结
查看>>
【HDOJ 5726】GCD(RMQ+二分)
查看>>
QTP 学习 - 参数化
查看>>
phpcms搭建环境
查看>>
C#常用代码片段备忘
查看>>
bsdasm
查看>>
我的盖洛普“优势识别器”测试报告
查看>>
在本地安装oracle-maven库
查看>>
HTML连载15-文本属性&颜色控制属性
查看>>
刚入前端整合的一个手机端页面适配+预加载+获取资源加载进度等的一个小模板...
查看>>
js ajax请求流程
查看>>
[教程]Ubuntu下完整配置自动壁纸切换
查看>>
Extjs中获取grid数据
查看>>
01、spring概述
查看>>
怎样才是真正的灰度发布?
查看>>
洛谷 P1531 I Hate It
查看>>