maven

 

Maven

 

Maven简介

何为Maven:Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、依赖管理和项目信息管理。

Maven是优秀的构建工具:1:自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。2:可以跨平台,无论是Windows上,还是Linux或Mac上,都使用相同命令,

Maven官方下载http://maven.apache.org/ ,下载后需要在path中配置环境变量,一般在配置后就可使用,在dos中输入mvn -v,出现版本信息即为成功

MAVEN原理:

 

MAVEN的目录结构

/项目目录

pom.xml 用于maven的配置文件

/src 源代码目录

/src/main工程源代码目录

/src/main/java 工程java源代码目录

/src/main/resource 工程的资源目录

/src/main/webAPP web资源文件

    /src/test 单元测试目录

/src/test/java

/target 输出目录,所有的输出都存放在这个目录下

/target/classes 编译后的class文件

MAVEN仓库:

就是放置所有jar文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖的jar

分类:Maven仓库分为本地仓库和远程仓库,而远程仓库中有分为中央仓库、私服、其他公共库

 

私服:一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。中央仓库计算网络资源有限所以各地出现了各自的私服,来降低中心服务器的压力开发者就近原则获取最近的私服,来下载jar包。

 

优点:节省自己的外网带宽、加速Maven构建、部署第三方构件,提高稳定性,增强控制、降低中央仓库的负荷。

中央仓库:jar包下载太过于分散导致开发人员开发周期延长,maven提供了中央库将所有的jar包聚合在一起

 

本地库:本地项目开发 如果需要下载jar包 必须依赖maven软件 maven软件需要配置私服的地址 配置本地缓存jar包位置.

java项目通过MAVEN下载所需jar包,从中央库(http://repo1.maven.org)下载太费时间,所以从私服中下载(maven.aliyun.com),而私服则从中央库中

抓取jar包,第一次使用时从中抓取,以后使用可以在本地缓存中找到

注意的是,要在maven中修改仓库的地址,告诉存储jar包的位置.默认的仓库是中央仓库,需要改成私服。同时,在本地中的maven中也会存在一个库,存储项目组已经使用过的jar包,当另一个项目用到相同的jar包时,

就可以在本地抓取,不用二次下载

 

MAVEN使用

Maven常用命令(在dos中)

mvn archetype:generate :创建 Maven项目

mvn compile :编译源代码

mvn test-compile :编译测试代码

mvn test : 运行应用程序中的单元测试

mvn site : 生成项目相关信息的网站

mvn clean :清除目标目录中的生成结果

mvn package : 依据项目生成 jar文件

mvn install :在本地 Repository中安装 jar

mvn deploy:将jar包发布到远程仓库

mvn eclipse:eclipse :生成 Eclipse项目文件

 

1:maven加入eclipsemyeclipes

 

2创建一个maven项目

 

创建成功后找到pom.xml文件,其中一些标签的内容如下

1:当前项目依赖某个公司某个项目中的某个版本的jar

<dependency>

<groupId>公司名</groupId>

<artifactId>项目名</artifactId>

<version>版本号</version>

</dependency>

例:

 

2依赖范围(<scope>)

Compile:默认,最终会将引入的jar包打包到warjar

System:告诉程序所需jar包在系统的某个位置,最终不会将引入的jar包打包到最后的warjar

Provided :相当于servlet要发布到Tomcat中,就不需要Tomcatjar

以下是博客中的一些解释:

1. compile:默认的scope。任何定义在compile scope下的依赖将会在所有的class paths下可用。maven工程会将其打包到最终的arifact中。如果你构建一个WAR类型的artefact,那么在compile scope下引用的JAR文件将会被集成到WAR文件内。  

2.   

3. provided:这个scope假定对应的依赖会由运行这个应用的JDK或者容器来提供。最好的例子就是servlet API。任何在provided scope下定义的依赖在构建时的类路径里是可用的,但是不会被打包到最终的artifact中。如果是一个WAR的文件,servlet API在构建时的类路径里是可用的,但是并不会被打包到WAR文件中。  

4.   

5. runtime:在runtime scope下定义的依赖只会在运行期可用,而在构建期的类路径下不可用。这些依赖将会被打包到最终的artifact中。比如你有一个基于web的应用需要在运行时访问MySQL数据库。你的代码没有任何MySQL数据库驱动的硬依赖。你的代码仅仅是基于JDBC API来编写,在构建期并不需要MySQL数据库驱动。然而,在运行期,就需要相应的驱动来操作MySQL数据库了。因此,这个驱动应该被打包到最终的artifact中。  

6.   

7. test:只用于测试变异的依赖(比如JUnit),execution必须定义在test scope下。这些依赖不会被打包到最终的artefact中。  

8.   

9. system:于provided scope很像。唯一的区别在于,在system scope中,你需要告诉Mave如何去找到这个依赖。如果你要引用的依赖在Maven仓库中不存在时,就可以用这个scope。不推荐使用system依赖。  

10.   

11. import:从其它的pom文件中导入依赖设置。  

3:插件:表示在maven构建中执行的jar名称 插件名 -maven-plugin命名,可以通过jar包中plugins.xml中找到所有的配置定义

 

例:设置Tomcat的端口号于字符集


3:项目的关系继承

在创建项目时,选中pom类型,就是父类型。

特点:

只要是在《dependencies》中依赖的jar包,一定会出现在子类中,适合项目开发,而在《dependencyManagement》中出现的,在其子类中可以不出现,可以通过《parent》来找到父类,并通过《dependencies》来选择父类中出现的jar包,适合框架开发

例:父类中定义版本号

 

例:子类中引用父类中的jar包。

 

运行或打包:打开eclipse中的Run as ,可以看到一些命令,如果没有运行或打包命令,则打开最后一项,找到MavenBuild自己创建命令,

例:run命令,点击Browse Workspace...选择项目,User settings选择maven的配置文件所在路径,点击run即可

 

Package命令如上。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值