欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

maven听课笔记总结(一)

Java Web water 2834℃ 0评论

Maven->解决包依赖的问题

下载maven,解压,配置PATH

 

Maven简单的流程

pom.xml

对于项目需要配置三个元素

  1. 项目名称<groupId>cn.edu.zttc.maven.hello</groupId>
  2. 项目模块<artifactId>hello-first</artifactId>
  3. 版本<version>SNAPSHOT-0.0.1</version>快照模版(特殊模版)
  4. 模型版本<modelVersion>4.0.0</modelVersion>

Maven的所有的类都必须放在src/main/java下面

package cn.edu.zttc.hello

 

public class Hello {

public String sayHello(String name) {

Return “hellol:”+name;

}

public static void main(String[] args) {

System.out.println(“hello world!”);

}

}

 

设置在config下面的settings.xml,对所有项目都起作用

 

<localRepository>d:/java/maven/repo</localRepository>

然后把settings.xml文件拷贝到这个目录下面

这个命令在本地仓库中有就本地运行,没有从远程目录下载运行

 

进入pox所在文件夹 输入mvn compile

会产生一个target文件,对类进行了编译操作

 

测试目录

src/test/java建一个测试类

package cn.edu.zttc.hello;

 

import org.junit.*;

import static junit.framework.Assert.*;

import cn.edu.zttc.hello.*;

 

public class TestHello {

@Test

Public void testHello() {

Hello h = new Hello();

assertEquals(h.sayHello(“zs”) , “hello:zs”);

}

}

 

===运行mvn test

 

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.10</version>

<scope>test</scope>

</dependency>
</dependencies>

指定项目有个依赖

 

Mvn clean(执行这个命令)

Mvn clean package(编译、测试、自动打包)

Mvn clean install(会把项目拷到本地仓库中)

 

<dependency>

<groupId></groupId>

<artifactId></artifactId>

<version></version>

<scope>compile</scope>

</dependency>

在不同的项目中,可以有效的进行项目管理

 

  • Mvn安装

下载maven的3.0.4版本

设置环境变量中的path

  • 本地仓库的安装

修改maven目录下的conf中的setting.xml(指明本地的一个路径)

  • 新建一个简单项目,主要创建xml

(主要包括,项目坐标)

groupId用来表示项目的名称

artifactId用来表示项目的模块名称建议使用项目的名称+模块名称来表示

version项目版本

  • 创建代码和测试代码

源代码应该放入src/main/java中

测试代码应该放入src/test/java中

源代码的资源文件放入src/main/resources中

测试代码的资源文件放入src/test/resources中

  • 运行

 

Mvn-clean->表示运行清理操作(会默认把target文件夹中的数据清理)

Mvn clean compile ->表示运行清理之后运行编译,会把代码编译到target文件中

Mvn clean test ->运行清理测试

Mvn clean package->运行清理和打包(包名为项目名称+版本名称)

Mvn clean install ->运行清理和安装(会将打好的包安装到本地仓库中,以便其他的项目可以调用)

Mvn clean deploy->运行清理和发布(发布到私服上面)

 

仓库的依赖管理

分模块的开发项目,ant最主要的问题(依赖管理不好管理)

 

Mvn archetype可以自动有效的项目骨架创建

Mvn archetype: generate

 

  1. maven项目的生成方式

默认sts和myeclipse都自带了maven的支持

Eclipe中需要安装m2eclipse

 

 

Maven有三大部分组成

  1. 依赖
  2. 仓库
  3. 生命周期和插件

推荐《maven实战》徐晓斌

 

 

第一部分依赖讲解

 

创建maven项目

模块划分

Core->vo

Dao

Log

Service

 

第一个模块

Group Id: org.konghao.user

Artifact Id: user-core

依赖包的查询

所有的依赖都是通过坐标进行存储的(GAV->groupid, artifactid, version)

有一些网上的仓库提供了坐标的查询

mvnrepository.com

www.sonatype.org

 

创建hibernat依赖

创建资源文件src/main/resources

 

第二个模块user-log

 

第三个模块user-dao

它需要运用哪些东西(user-core)传递性依赖

 

Maven是如何搜索依赖的?首先去本地仓库查询如果本地仓库没有,就去中央仓库查询。

Maven依赖范围<scope>,依赖传递

依赖是会传递的

a->c b->a ==>b->c(这种依赖是基于compile这个范围进行传递)

如果没有写scope默认就是compile

如果scope是test,那么依赖就不会传递

<scope>的作用域有哪写。

依赖的范围

  1. test范围指的测试范围有效,在编译和打包时都不会使用
  2. compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去(默认的依赖)
  3. provide指的是在编译和测试的时候有效,最后生成war包是不会加入,比如:servlet-api(因为tomcat等web服务器已经存在了,如果再打包会冲突)
  4. runtime在运行时依赖,在编译时不依赖

 

a->b1.0 c->b1.2

d->a,c这样就会冲突,(这时在d的pom中,哪个依赖先写,就使用先写依赖的版本)

 

第四个模块user-service

首先依赖于user-dao、user-log

 

a–>b1.0

c–>b1.1

d–>a和c

f–>d,c,如果路径的长短不一致就选择最短的,这时f->依赖b 1.1

<dependency>

<exclusions>

<exclusion>

</exclusion>

</exclusions>

<dependency>

 

如果希望精确的控制依赖包,可以使用依赖的排除功能<exclusions>

 

依赖的聚合和继承问题

第五个模块user-aggregation,将所有的模块聚合编译打包

<packaging>pom</packaging>

<modules>

<module>../user-core</module>

<module>../user-dao</module>

<module>../user-log></module>

<modue>../user-service<module>

</modules>

 

<properties>

<junit.version>4.0</junit.version>

</properties>

 

第六个模块user-parent

其他模块可以继承这个模块的pom.xml

 

<parent>

<groupId>org.konghao.user</groupId>

<artifactId>user-parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

<relativePath>../user-parent/pom.xml</relativePath>

</parent>

 

<dependencyManagement>

</dependencyManagement>

对于依赖的继承而言都需要dependencyManagement,如果不管理,子类会全部继承,这种可能会导致一些模块存在不需要的依赖

 

转载请注明:学时网 » maven听课笔记总结(一)

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!