欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Maven3.0学习文档.doc

    • 资源ID:33454582       资源大小:103KB        全文页数:12页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Maven3.0学习文档.doc

    如有侵权,请联系网站删除,仅供学习与交流Maven3.0学习文档【精品文档】第 12 页Maven入门教程1.1. 介绍、环境配置1.1.1. Maven介绍Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个声明周期,包括清除、编译,测试,报告、打包、部署等等。目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。Maven正是为了将开发人员从这些任务中解脱出来而诞生的1.1.2. Maven能够做什么l Jar的声明式依赖性管理l 项目自动构建1.1.3. 环境配置l http:/maven.apache.org/download.html 下载最新版本Maven 3.0.2 (Binary zip)l 解压到 D(本身就是绿色版不需要安装):l 配置环境变量(配置之前,必须确定配置了JDK环境变量)MAVEN_HOME : D:apache-maven-3.0.2把此命令添加到Path中: %MAVEN_HOME%binl 配置用户范围的settings.xmlMAVEN_HOME/conf/settings.xml 全局的/.m2/settings.xml 单个用户的l 验证安装是否成功在命令行上输入: mvn -version;回车, 如看到下面信息表示安装成功1.1.4. Maven目录分析l bin:含有mvn运行的脚本l boot:含有plexus-classworlds类加载器框架l conf:含有settings.xml配置文件l lib:含有Maven运行时所需要的java类库l Settings.xml 中默认的用户库: $user.home/.m2/repository通过maven下载的jar包都会存储到指定的个人仓库中l Maven默认仓库下载地址在: maven的lib目录下maven-model-builder-3.0.4.jar的pom.xml中1.2. 第一个Maven演示1.2.1. 创建目录结构Convention Over Configuration (约定优于配置)。在现实生活中,有很多常识性的东西,地球人都知道。比如说:如何过马路(红灯停绿灯行),如何开门,关门等。对于这些事情,人们已经有了默认的约定, 在软件开发过程中,道理也是类似的,如果我们事先约定好所有项目的目录结构,标准开发过程(编译,测试) , 所有人都遵循这个约定。软件项目的管理就会变得简单很多。在现在流行的很多框架中,都使用了这个概念Hello -src -main -java -用来存放Java文件 -resources -用来存放资源文件 -test -java -用来存放测试的Java文件 -resources -target -项目输出位置,编译完毕后自动生成 -pom.xml1.2.2. 建立pom.xml<project xmlns="http:/maven.apache.org/POM/4.0.0" xmlns:xsi="http:/www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/maven.apache.org/POM/4.0.0 http:/maven.apache.org/xsd/maven-4.0.0.xsd"> <!- 当前pom的版本号 -> <modelVersion>4.0.0</modelVersion> <!- groupId: 当前jar所属的命名空间 -> <groupId>cn.itcast.maven</groupId> <!- 当前项目模块名称 -> <artifactId>Hello</artifactId> <!- 当前项目的版本, SNAPSHOT镜像版 -> <version>0.0.1-SNAPSHOT</version><!- 当前模块需要依赖的相关jar包,也称为依赖管理, 所有被依赖的包都是通过"坐标"定位的 -><dependencies> <!- 需要依赖junit 通过 groupId+artifactId+version来查找,如果本地没有则到中央仓库下载 -><dependency><!- 当前jar所属的命名空间 -><groupId>junit</groupId><!- 依赖的项目模块的名称 -><artifactId>junit</artifactId><!- 依赖的版本号 -><version>4.9</version><!- 依赖的范围, 有 test compile privlege -><scope>test</scope></dependency></dependencies></project>pom.xml 文件是maven对一个项目的核心配置,这个文件将包含你希望如何构建项目的大多数配置信息。POM大而复杂,但你不用全部去了解,只要使用一些常用的配置就可以了1.2.3. 创建Java类与测试类l 在src/main/java/cn/itcast/maven目录下新建文件Hello.javapackage cn.itcast.maven;public class Hello public String sayHello(String name)return "Hello "+name+"!"l 在/src/test/java/cn/itcast/maven目录下新建测试文件HelloTest.javapackage cn.itcast.maven;import org.junit.Test;import static junit.framework.Assert.*;public class HelloTest Testpublic void testHello()Hello hello = new Hello();String results = hello.sayHello("litingwei");assertEquals("Hello litingwei!",results);1.2.4. 命令测试打开cmd命令行, 进入Hello项目根目录执行mvn compile命令, 查看根目录变化cmd 中继续录入mvn clean命令,然后再次查看根目录变化cmd 中录入 mvn clean compile命令, 查看根目录变化cmd 中录入 mvn clean test命令,查看根目录变化cmd 中录入 mvn clean package命令,查看根目录变化1.3. Maven核心概念1.3.1. Maven插件Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的每个插件都能实现多个功能,每个功能就是一个插件目标Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务, Maven的插件在: .m2repositoryorgapachemavenplugins1.3.2. Maven坐标类似在平面几何中坐标(x,y)可以标识平面中唯一的一点, Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范拥有了统一规范,就可以把查找工作交给机器l groupId:定义当前Maven项目隶属项目 (实际对应JAVA的包的结构, 是main目录里java的目录结构)l artifactId:定义实际项目中的一个模块(项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称)l version:定义当前项目的当前版本1.3.3. Maven仓库l 何为Maven仓库:用来统一存储所有Maven共享构建的位置就是仓库l Maven配置jar包的路径为:groupId/artifactId/version/artifactId-versionl 本地仓库(/.m2/repository/):每个用户只有一个本地仓库l 中央仓库(Maven默认的远程仓库):Maven默认的远程仓库下载地址为:http:/repo1.maven.org/maven2l 私服:是一种特殊的远程仓库, 它是架设在局域网内的仓库, 主要是为了团队协作开发l 镜像:用来替代中央仓库, 速度一般比中央仓库快1.3.4. 生命周期1.4. 第二个Maven演示1.4.1. HelloFriend目录结构HelloFriend -src -main -java -resources -test -java -resources -pom.xml1.4.2. 建立Pom.xml<project xmlns="http:/maven.apache.org/POM/4.0.0" xmlns:xsi="http:/www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:/maven.apache.org/POM/4.0.0 http:/maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.itcast.maven</groupId><artifactId>HelloFriend</artifactId><version>1.0.0</version><packaging>jar</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><dependency><groupId>cn.itcast.maven</groupId><artifactId>Hello</artifactId><version>1.0.0</version><scope>compile</scope></dependency></dependencies></project>1.4.3. 创建Java类与测试类l 在src/main/java/cn/itcast/maven目录下新建文件HelloFriend.javapackage cn.itcast.maven;public class HelloFriendpublic String sayHello(String name)return "Hello "+name+"!"l 在/src/test/java/cn/itcast/maven目录下新建测试文件HelloFriendTest.javapackage cn.itcast.maven;import org.junit.Test;import cn.itcast.maven.Hello;public class HelloFriendTest Testpublic void tesHelloFriend()HelloFriend helloFriend = new HelloFriend();String results = helloFriend.sayHelloToFriend("litingwei");System.out.println(results);1.4.4. 命令测试l 在HelloFriend目录下执行 mvn clean mvn compile mvn test 都正常l 在HelloFriend目录下执行命令mvn package 系统报错说没有找到依赖, 因为HelloFriend依赖Hello模块,但是此模块在个人仓库和中央仓库中并不存在l 需要重新构建Hello第一个项目并安装到数据仓库, 在Hello根目录下执行mvn clean install, 就会部署的中央仓库中1.5. Maven与Eclipse整合1.5.1. 配置maven插件1.5.2. user settings1.6. Maven部署到Tomcat中1.6.1. 创建Java项目l 在MyEclipse创建项目的时候选择Maven Projectl 在构件向导的时候选择quickstart注意, 此向导也是插件,第一次使用的时候.也要从远程仓库中下载相应的jar包, 因此需要网络环境l 设置当前模块的坐标,和相应的版本号l 创建完毕后默认生成的项目包目录如下l 通过在pom.xml中配置相应Hello.jar即可<project xmlns="http:/maven.apache.org/POM/4.0.0" xmlns:xsi="http:/www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/maven.apache.org/POM/4.0.0 http:/maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!- 定义了自己的坐标 -> <groupId>Hello3</groupId> <artifactId>Hello3</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <!- 当前Maven模块的相关信息,可选信息 -> <name>Hello3</name> <url>http:/maven.apache.org</url> <!- 设置常量, 下面可以通过$project.build.sourceEncoding来引用,一般来说版本号设置在此处 -> <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!- 依赖管理 -> <dependencies> <!- 依赖Junit-> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <!- 依赖前面的Hello, 那么在仓库中必须拥有 Hello的坐标 -> <dependency> <groupId>cn.itcast.maven</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies></project>l 通过在pom.xml中单击右键选择相应的命令即可1.6.2. 创建Web项目l 选择创建一个普通的web工程l 设置相应的坐标l 如果采用src缺省的包结构,则pom.xm中需要指定编译和调试的目录. <project xmlns="http:/maven.apache.org/POM/4.0.0" xmlns:xsi="http:/www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/maven.apache.org/POM/4.0.0 http:/maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!- 定义自身的坐标 -> <groupId>web</groupId> <artifactId>web</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!- 配置常量 -> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jstl.version>1.2</jstl.version> <compiler.version>1.6</compiler.version> </properties> <!- 定义依赖管理 -> <dependencies> <!- 定义需要依赖的系统jar, provided则在打包的时候不会包含 -> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>$jstl.version</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <!- 定义依赖的第三方包,compile 则打包的时候会自动加载到lib目录中 -> <dependency> <groupId>cn.itcast.maven</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> <!- 用来定义构建阶段的标签 -> <build> <!- 由于采用的非Maven的约定,则在构建的时候要指定的目录 -> <sourceDirectory>$basedir/src</sourceDirectory> <outputDirectory>$basedir/WebRoot/WEB-INF/classes</outputDirectory> <resources> <!- 资源文件也存放到src中但排除 *.java -> <resource> <directory>$basedir/src</directory> <excludes> <exclude>*/*.java</exclude> </excludes> </resource> </resources> <plugins> <!- 配置相应的打包插件 -> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <webappDirectory>$basedir/WebRoot</webappDirectory> <warSourceDirectory>$basedir/WebRoot</warSourceDirectory> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>$compiler.version</source> <target>$compiler.version</target> </configuration> </plugin> </plugins> </build></project>l 在index.jsp页面中添加如下代码<body> <% / 要导入相应: cn.itcast.maven.* Hello hello=new Hello(); out.println(hello.sayHello("admin"); %></body>1.7. Maven私服1.7.1. 关于中央仓库注意事项l 地址: 目前来说: http:/repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中其他的都是镜像l 索引: 中央仓库带有索引文件以方便用户对其进行搜索,完整的索引文件大小约为60M,索引每周更新一次l 黑名单: 如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服1.7.2. 为什么需要私服为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库1.7.3. Nexus环境搭建第一步:下载nexus-webapp-1.9.2.4.war包,然后拷贝到tomcat下的webapps目录中第二步:启动tomcat 默认登录账户密码为: admin admin123第三步:访问http:/localhost:8080/项目名称/1.7.4. 认识repositoryNexus仓库的默认的地址, nexus-2.1.2WEB-INFplexus.properties 中定义的在Views/Repositories->Repositories里进行配置, nexus里可以配置3种类型的仓库,分别是proxy、hosted、group proxy:是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里 Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。我今天就发现,明明构件已经更新了,在浏览器里却看不到,还以为是BUG,其实是被浏览器缓存了virtual:也是中央仓库镜像,支持M1老版本1.7.5. 每个仓库的作用3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库Central: 用来代理maven中央仓库中发布版本构件的仓库Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库Releases: 用来部署管理内部的发布版本构件的宿主类型仓库Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库1.7.6. Central Repository最关键的一个配置, 就是Central Repository的proxy配置,因为大部分的构件,都是要通过这个proxy得到的, 1.7.7. 配置Hosted Repository一般会配置3个hosted repository, 分别是3rd party、Snapshots、Releases,分别用来保存第三方jar(典型的比如ojdbc6.jar),项目组内部的快照、项目组内部的发布版, 这里并没有什么特别的配置,只是Deployment Policy这个选项,一般Snapshots会配置成允许,而Releases和3rd party会设置为禁止 1.7.8. 配置group repository前面说过group其实是一个虚拟的仓库, 通过对实体仓库(proxy、hosted)进行聚合, 对外暴露一个统一的地址这里要注意的是,放到左边的仓库,才是会被聚合的仓库1.7.9. 从私服中下载资源l 可以在支持Maven的项目中进行如下配置<repositories> <repository> <id>shop</id> <name>仓库介绍</name> <url>http:/localhost:8080/nexus-2.1.2/content/groups/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>plugin</id> <name>插件下载地址</name> <url>http:/localhost:8080/nexus-2.1.2/content/groups/public/</url> </pluginRepository> </pluginRepositories>l 也可以把地址配置在setting.xml的<profiles>标签中这样对所有项目都生效<profiles> <repositories><repository><id>shop</id><name>仓库介绍</name><url>http:/localhost:8080/nexus-2.1.2/content/groups/public/</url></repository></repositories><pluginRepositories> <pluginRepository> <id>plugin</id> <name>插件下载地址</name><url>http:/localhost:8080/nexus-2.1.2/content/groups/public/</url> </pluginRepository></pluginRepositories> </profiles>l 把本地项目提交到私服中<distributionManagement><repository><!- 要在个人的setting.xml中配置上传的密码 -><id>snapshots</id><name>snapshots 测试版</name><!- nexus中查找相应的地址-> <url>http:/localhost:8080/nexus/content/repositories /snapshots/</url></repository></distributionManagement><servers> <!- 在.m2setting.xml中 配置了要上传仓库的密码 -><server><id>snapshots</id><username>admin</username><password>admin123</password></server><server><id>releases</id><username>admin</username><password>admin123</password></server> </servers>1.8. 其它小技巧1.8.1. 跳过单元测试你可能想要配置 Maven 使其完全跳过单元测试。 可能你有一个很大的系统,单元测试需要花好多分钟来完成,而你不想在生成最终输出前等单元测试完成。 你可能正工作在一个遗留系统上面,这个系统有一系列的失败的单元测试,你可能仅仅想要生成一个 JAR 而不是去修复所有的单元测试。 Maven 提供了跳过单元测试的能力l 采用命令的方式跳过单元测试$ mvn install -D maven.test.skip=truel 采用配置的方式跳过单元测试surefire 插件用来在maven构建生命周期的test 的插件, 如果每次都不需要运行test则通过简单的配置即可<build><plugins><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.7.1</version><configuration><skip>true</skip></configuration></plugin></plugins></build>1.8.2. 代码的方式生成maven骨架Archetype可以帮助我们迅速地构建起项目的骨架,在前面的例子中,我们完全可以在Archetype生成的骨架的基础上开发Hello World项目以节省大量时间,如果没有制定packageName则默认与goupId相同mvn archetype:create -D groupId=com.test.maven -D artifactId=test1 -D packageName=a.b.c

    注意事项

    本文(Maven3.0学习文档.doc)为本站会员(豆****)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开