maven心得

合集下载

maven的学习总结

maven的学习总结

maven的学习1maven 的介绍从字面解释maven是知识渊博、经验丰富的专家或怪才的意思。

深入研究和使用maven,确实让人感到它确实沉淀了Java项目构建领域中的丰富知识和经验,并以一种高度可复用的形式出现在你的面前。

maven的开发者在他们开发网站上指出,maven的目标是要使得项目的构建更加容易,它把编译、打包、测试、发布等开发过程中的不同环节有机的串联了起来,并产生一致的、高质量的项目信息,使得项目成员能够及时地得到反馈。

maven有效地支持了测试优先、持续集成,体现了鼓励沟通,及时反馈的软件开发理念。

如果说Ant的复用是建立在"拷贝--粘贴"的基础上的,那么Maven通过插件的机制实现了项目构建逻辑的真正复用。

2maven的环境搭建首先去官方网站下载之:/dyn/closer.cgi/maven/binaries/apache-maven-2.2.1-bin.zip,我选择的是截至目前最新版本maven2.2.1版本2.1设置环境变量:Maven2下载完后,我将其解压到我的计算机的D:\javatools\apache-maven-2.2.1下,目录结构如下:环境变量:我的电脑----属性----高级----环境变量,点击“系统变量”下的新建,输入:变量名MAVEN_HOME; 变量值D:\javatools\apache-maven-2.2.1,在系统变量列表中找到系统变量path,打开之,在变量值中追加”;%MAVEN_HOME%\bin”,至此环境变量设置完毕。

检查一下是否已经完成安装,打开dos窗口,输入mvn –v,如果出现以下信息则表示maven2已经安装成功:2.2本地仓库配置:D:\javatools\apache-maven-2.2.1\conf目录下的setting.xml文件中修改两处:第一处:修改为自己对应的本地仓库目录:第二处:修改为:sky-mobi公司己经有架设一台mavan仓库,供大家使用3Maven生命周期4常用的Maven命令1. 创建Maven的普通java项目:mvn archetype:create -DgroupId=packageName -DartifactId=projectName2. 创建Maven的Web项目:Mvn archetype:create -DgroupId=packageName -DartifactId=webappName –DarchetypeArtifactId = maven-archetype-webapp3. 编译源代码:mvn compile4. 编译测试代码:mvn test-compile5. 运行测试:mvn test6. 产生site:mvn site7. 打包:mvn package8. 清除产生的项目:mvn clean9. 生成eclipse项目:mvn eclipse:eclipse,生成idea项目mvn idea:idea 这年头现在先进了,不用运行也能导入idea工具上了。

Maven_学习总结_全

Maven_学习总结_全

29_maven_初步(由于中央仓库无法访问,该部分稍微有些乱)1. 如果使用Ant分模块的管理时,依赖的管理不是很好操作;maven可以解决这个问题;2. 配置:将maven的bin目录加入到环境变量path中:例如:3. 命令:查看maven版本:mvn -version4. pom.xml中几个最基本的元素:①groupId:项目的项目组,和包名一致②artifactId:标识项目中的模块,建议使用项目名称-模块名称例如:project-module③version:版本,其中,快照版本,是一种特殊的版本④modelVersion 固定值4.0.0⑤pom.xml示例:<modelVersion>4.0.0</modelVersion><groupId>com.itmuch.maven.hello</groupId><artifactId>hello-first</artifactId><version>0.0.1-SNAPSHOT</version>5. maven中的路径的约定俗成:①java文件放在src/main/java目录中②test文件放在src/test/java目录中6. 进入pom.xml所在的目录,执行mvn compile,可编译项目7. 执行mvn test命令,可执行单元测试8. 执行mvn clean命令,可清除产生的项目,默认清理target目录中的数据9. 执行mvn package命令,可以打包10. 执行mvn install命令,可打包,并将该包放入本地仓库中11. 添加依赖:<dependencies><dependency><groupId>com.itmuch.maven.hello</groupId><artifactId>hello-first</artifactId><version>SNAPSHOT-0.0.1</version></dependency></dependencies>12. maven的优势:可以在不同的项目之间,有效地进行项目的管理30_maven_初步_思路讲解和archetype的使用和eclipse的安装1. 执行maven deploy命令,可发布到私服中2. 执行maven archetype:genarate命令,可自动创建项目3. 使用Eclipse开发maven项目①不要使用Eclipse自带的maven,而应该用自己的maven,配置方法:Window - Preferences - Maven - Installations - 选择自己的maven的路径②选择settings.xml文件,配置方法:Window - Preferences - Maven - User Settings - 选择settings.xml文件③新建项目:右击- New - Other - Maven Project - 选择创建31_maven_依赖_环境搭建和依赖的范围1. maven的三大块内容:依赖、仓库、生命周期和插件2. 依赖通过坐标来进行查找的(GAV-->groupId、artifactId、version )3. 有一些网上的仓库提供了坐标的查询:例如:①②/nexus/4. 中央工厂:maven/lib/maven-model-build.jar中的maven-model-builder-3.2.1.jar中:org\apache\maven\model\pom-4.0.0.xml配置的<repository><id>central</id><name>Central Repository</name><url>/maven2</url><layout>default</layout><snapshots><enabled>false</enabled></snapshots></repository>5. 依赖的传递性:①依赖是会被传递的,例如:A依赖C,B依赖A,那么B就自动依赖C(这种依赖是基于compile这个作用域来进行传递的,如果指定了scope是test,那么依赖并不会传递到另一个项目的compile包中去)②对于依赖的传递而言,主要是针对compile作用域传递6. 依赖的范围:①test范围指的是测试范围有效,在编译和打包时,都不会使用这个依赖②compile范围指的是编译范围有效,在编译、打包时都会将依赖存储进去【默认】③provided范围指的是在编译和测试的过程有效,最后生成war包时不会加入,例如servlet-api,因为tomcat等web服务器已经存在了,如果再打包会冲突④runtime在运行时会依赖,在编译的时候不依赖(不常见)⑤import⑥system32_maven_依赖_传递性依赖的冲突的问题1. 传递性依赖的冲突问题:①a-->b1.0 c-->b1.1 d-->a和c,此时:在d的pom中,哪一个依赖先写,就使用先写依赖的版本示例:如果d的pom中:<dependency>a</dependency><dependency>c</dependency>那么,d所依赖的b的版本是b1.0②a-->b1.0 c-->b1.1 d-->a和c f-->d和c,如果路径的长短不一致,就选最短路径分析:d-->a和c,可由①中规则推出:d-->b1.0;本例中,f找到b的路径分别是:f-d-a-b和f-c-b所以本例中,f-->b1.1 2. 如果希望精确控制依赖包,可以使用依赖的排除功能进行控制:33_maven_依赖_继承和聚合1. 聚合的优势:可以在一个地方编译多个pom文件;示例:<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>com.itmuch.maven</groupId><artifactId>maven-parent</artifactId><version>0.0.1-SNAPSHOT</version><!-- 聚合时,必须用pom --><packaging>pom</packaging><!-- 使用modules元素,聚合其他项目 --><modules><!-- 被聚合的项目的路径 --><module>../maven-dao</module><module>../maven-service</module></modules></project>2. 继承:①父pom.xml:<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>com.itmuch.maven</groupId><artifactId>maven-parent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><url></url><!-- 定义properties,可使用${名称}来调用,例如:${junit.version} --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><junit.version>4.10</junit.version></properties><!-- 使用dependencyManagement,可对依赖进行管理。

Maven学习总结(17)——深入理解maven灵活的构建

Maven学习总结(17)——深入理解maven灵活的构建

Maven学习总结(17)——深⼊理解maven灵活的构建⼀个优秀的构建系统必须⾜够灵活,应该能够让项⽬在不同的环境下都能成功构建。

maven为了⽀持构建的灵活性,内置了三⼤特性,即:属性、profile和资源过滤。

1、maven属性maven属性分6类:1、内置属性:如${basedir}表⽰项⽬根⽬录,${version}表⽰项⽬版本2、POM属性:⽤户可以引⽤pom⽂件中对应的值。

如:${basedir} 项⽬根⽬录${project.build.directory} 构建⽬录,缺省为target${project.build.outputDirectory} 构建过程输出⽬录,缺省为target/classes${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}${project.packaging} 打包类型,缺省为jar${project.xxx} 当前pom⽂件的任意节点的内容3、⾃定义属性:⽤户可以在pom的<properties>元素下⾃定义maven属性。

4、setting属性:⽤户可以使⽤以settings开头的属性引⽤settings.xml中xml元素的值,如${settings.localRepository}指向⽤户本地仓库的地址。

5、java系统属性:maven可以使⽤当前java系统的属性,如${user.home}指向了⽤户⽬录。

6、环境变量属性:所有环境变量都可以使⽤以env.开头的属性。

如:${env.JAVA_HOE}。

2、资源过滤这⾥所谓的资源:也就就是指src/main/resources和src/test/resources⽂件下的所有⽂件,默认情况下,这些⽂件会被复制到classpath下⾯,即target/classes下⾯。

所谓资源过滤,就是过滤这些⽂件夹下⾯的⽂件⾥⾯的内容,看⾥⾯的maven变量是否需要替换。

Maven3实战笔记之Maven的生命周期和插件

Maven3实战笔记之Maven的生命周期和插件

Maven3实战笔之Maven的生命周期和插件1.Maven的生命周期Maven的生命周期其实是指它对所有的构建过程进行了反复的推敲、反思,之后总结了一套高度抽象过程。

这个过程是高度完善的、容易扩展的。

基本上包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、、站点生成等步骤,几乎所有的项目生命周期也就这样。

Maven项目周期是一个抽象的概念,这个概念性的东西意味着它并不做任何实质性的事情,也就是说:它就像接口,只定义规范,具体细节它不管。

具体的实现细节则交给了Maven的各个丰富的插件。

Maven的插件机制有可能是跟Eclipse学的,基于一个内核core,定义一堆流程性的东西,让插件去实现这些规范。

其他组织也可以根据这套规范插入自己的东西,形成有特色化的、自定制的Maven。

Maven有三套相互独立的生命周期,分别是:clean、default、site。

clean主要是清理项目、default是Maven最核心的的构建项目、site是生成项目站点。

每一个大的生命周期又分为很多个阶段。

后面的阶段依赖于前面的阶段,这点有点像Ant的构建依赖。

生命周期本身相互独立,用户可以仅仅调用生命周期的某一个阶段,也就是说用户调用了default周期的任何阶段,并不会触发clean周期以及site周期的任何事情。

2.Maven生命周期阶段详解3大生命周期蕴含着小小的阶段,我们按顺序看一下clean周期:pre-clean:准备清理clean:真正的清理工作post-clean:执行清理后的一些后续工作default周期:validate:验证initialize:初始化配置generate-sources:生成源代码编译目录process-sources:处理项目主资源文件,复制资源文件到outputclasspathgenerate-resources:生成资源目录process-resources:处理资源文件complie:编译源代码process-classes:处理编译后文件generate-test-sources:生成测试目录process-test-sources:处理项目测试资源文件,复制测试资源文件到outputclasspath generate-test-resources:生成测试资源文件process-test-resources:处理测试资源文件test-compile:编译测试代码process-test-classes:处理测试代码test:单元测试运行测试代码prepare-package:打包前的准备package:将编译好的代码打包成为jar或者war或者ear等等pre-integration-test:准备整体测试integration-test:整体测试post-integration-test:为整体测试收尾verify:验证install:安装到本地Maven库deploy:将最终包部署到远程Maven仓库site周期:pre-site:准备生成站点site:生成站点及文档post-site:站点收尾site-deploy:将生成的站点发布到服务器上就是执行了整个default生命周期这个就是执行了clean周期的前两个阶段、default周期的所有阶段、site周期的所有阶段。

Maven学习总结

Maven学习总结

Maven学习总结(一下红色字体表示重要信息或者自己写的备注)1.maven的安装。

1.需要安装JDK,使用java -version查看,或者使用javac确认。

2./download.html3.网站下载最新版本的maven。

4.window系统,需要配置环境变量:M2_HOME=c:/Program Files/maven-2.0.9PATH=%PATH%;%M2_HOME%/bin5.使用mvn -v命令查看mvn是否已经正确安装2.maven help命令。

1.help:active-profiles :列出当前构建中活动的Profile(项目的,用户的,全局的)。

2.help:effective-pom :显示当前构建的实际POM,包含活动的Profile。

3.help:effective-settings :打印出项目的实际settings, 包括从全局的settings 和用户级别settings 继承的配置4.help:describe :描述插件的属性。

它不需要在项目目录下运行。

但是你必须提供你想要描述插件的groupId 和artifactId。

3.创建一个maven项目。

(在dos环境下用命令新建了一个项目)我们用最基本的archetype 来创建一个入门项目的骨架。

这个插件的前缀是―archetype‖,目标为‖create‖。

命令行中输入:C:/Documents and Settings/Administrator>mvn archetype:create-DgroupId=cn.vicky.maven.ch01 -DartifactId=simple -DpackageName=cn.vicky.maven 将在C:/Documents and Settings/Administrator文件夹下创建,一个simple文件夹。

且会,自动创建一个App.java的文件!simple/simple/pom.xml/src//src/main//main/java/src/test//test/javaMaven Archtype 插件创建了一个与artifactId 匹配的目录——simple。

maven学习总结

maven学习总结

目录1. 安装maven (1)2. Maven使用 (1)2.1 编写pom (1)2.2 根据pom.xml中的配置,新建各种包名 (3)2.2.1 源代码的默认结构如下:src/main/java (3)2.2.2 测试代码的默认结构如下:src/test/java (3)2.3 相关命令 (4)3. 使用Archetype生成项目骨架 (4)4. 在eclipse中安装m2e (4)5. 依赖范围 (5)。

......................................................................................................... 错误!未定义书签。

1.安装maven下载安装包,解压缩后,将安装包/bin添加到环境变量path中验证是否安装成功:mvn –vPom.xml—配置文件—重要运行mvn help:system,打印出java系统属性和环境变量。

用户目录:C:\User\fang\.m2将maven安装目录中的conf/settings.xml文件复制到~/.m2/settings.xml说明:安装目录中的settings文件是全局范围的,若修改整台机器上所有用户都会直接受到影响。

后者是用户范围的,只有当前用户会受到影响。

2.Maven使用2.1编写pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.sunfangfang.mvnbook</groupId><artifactId>helloworld</artifactId><version>1.0-SNAPSHOT</version><name>Maven Hello World Project</name><packaging>war</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.5</source><target>1.5</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.2.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.sunfangfang.mvnbook.helloworld.Hello World</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build></project>2.2根据pom.xml中的配置,新建各种包名2.2.1源代码的默认结构如下:src/main/java在默认结构下新建com/sunfangfang/mvnbook/helloworld文件夹在helloworld文件夹下新建java文件,如下package com.sunfangfang.mvnbook.helloworld;public class HelloWorld{public String sayHello(){return "Hello Maven!";}public static void main(String[] args) {System.out.println(new HelloWorld().sayHello());}}2.2.2测试代码的默认结构如下:src/test/java在默认结构下新建com/sunfangfang/mvnbook/helloworld文件夹在helloworld文件夹下新建java文件,如下package com.sunfangfang.mvnbook.helloworld;import static org.junit.Assert.assertEquals;import org.junit.Test;public class HelloWorldTest{@Testpublic void testSayHello(){HelloWorld helloWorld = new HelloWorld();String result = helloWorld.sayHello();assertEquals("Hello Maven!",result);}}2.3相关命令mvn clean compilemvn clean testmvn clean packagemvn clean install命令的依赖关系:执行test之前会先执行compile,执行package前会执行test,执行install前会执行package。

Maven最佳实践:Maven仓库

Maven最佳实践:Maven仓库

什么是Maven仓库在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等。

每建立一个项目,你都需要建立这样的一个/lib目录,然后复制一对jar文件,这是很明显的重复。

重复永远是噩梦的起点,多个项目不共用相同的jar文件,不仅会造成磁盘资源的浪费,也使得版本的一致性管理变得困难。

此外,如果你使用版本管理工具,如SVN(你没有使用版本管理工具?马上试试SVN吧,它能帮你解决很多头疼的问题),你需要将大量的jar文件提交到代码库里,可是版本管理工具在处理二进制文件方面并不出色。

Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源。

此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本管理。

你也不在需要提交JAR文件到SCM仓库中,你可以建立一个组织层次的Maven 仓库,供所有成员使用。

简言之,Maven仓库能帮助我们管理构件(主要是JAR)。

本地仓库vs. 远程仓库运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。

如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

比如说,你的项目配置了junit-3.8的依赖,在你运行mvn test的时候,Maven需要使用junit-3.8的jar 文件,它首先根据坐标查找本地仓库,如果找到,就直接使用。

如果没有,Maven会检查可用的远程仓库配置,然后逐个尝试这些远程仓库去下载junit-3.8的jar文件,如果远程仓库存在该文件,Maven会将其下载到本地仓库中,继而使用。

idea maven实验总结

idea maven实验总结

idea maven实验总结
在本次实验中,我们学习了如何使用idea maven进行项目管理和构建。

通过使用maven,我们可以方便地管理项目依赖、构建和打包项目。

同时,maven还提供了许多插件,可以帮助我们完成各种任务,如测试、发布等。

在实验中,我们首先学习了如何创建一个maven项目。

通过创建一个新的maven项目,我们可以快速创建一个包含基本依赖关系的项目结构。

然后,我们学习了如何添加和管理项目依赖。

通过使用maven 的依赖管理功能,我们可以轻松地添加和删除项目依赖,而不必手动下载和配置依赖项。

接下来,我们学习了如何使用maven进行项目构建和打包。

通过使用maven的命令行工具或在idea中执行maven命令,我们可以快速构建和打包项目。

这可以大大简化我们的项目构建过程,并确保我们的项目能够正确地构建和运行。

最后,在实验中,我们还学习了如何使用maven插件来完成各种任务。

例如,我们学习了如何使用maven-surefire插件来运行单元测试,以及如何使用maven-release插件来发布项目版本。

总的来说,本次实验让我们更好地了解了如何使用idea maven 进行项目管理和构建。

通过使用maven,我们可以方便地管理项目依赖和构建项目,并确保项目能够正确地构建和运行。

- 1 -。

maven3实战读书笔记

maven3实战读书笔记

Maven简介是什么?Is a software project management and comprehension tool.项目管理工具是基于POM概念(工程对象模型)[设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复][与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]功能:1)规范构建系统,项目构建,自动化(标准化)构建→构建工具(清理、编译、测试、生成报告、打包、部署),而且是跨平台的。

抽象构建过程,提供构建任务实现。

2)依赖管理:[在这开源的年代里,几乎任何Java应用都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。

随着依赖的增多,版本不一致、版本冲突、依赖臃肿等问题都会接踵而来。

Maven提供了一个优秀的解决方案:]通过一组坐标maven 能够找到任何一个Java类库。

3)项目信息管理:管理原本分散在各个角落的项目信息:项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址。

4)自动生成项目站点,获得项目文档、测试报告、静态分析报告、源码版本日志报告。

5)中央仓库:提供一个免费的中央仓库,在其中集合可以找到任何的流行开源类库。

通过一些Maven的衍生工具(如Nexus),可以对其进行快速地搜索。

只要定位了坐标,Maven 就能够帮我们自动下载。

/maven2/相关内容:1)maven的安装、配置、基本使用2)坐标和依赖、中央仓库、maven仓库、生命周期、插件、聚合与集成3)nexus建立私服、使用maven进行测试、使用Hudson进行持续集成、4)使用maven构建web应用、maven的版本管理、maven的灵活构建、生成项目站点和maven的m2eclipse插件5)maven和archetype插件Java领域构建管理的解决方案发展:IDE→Make|Ant+Ivy→Maven================================================ 参考官方document:“/guides/index.html”几乎都能找到。

《Maven实战》学习笔记(5)

《Maven实战》学习笔记(5)

《Maven实战》学习笔记(5)普通来说,项目的配置文件都在resources下面,默认maven会从下面路径查找资源文件,这是超级pom中的配置 resources resource directoryF:\maven_workspace\workspace\piaoyi\service\src\main\resource s /directory /resource /resources testResourcestestResource directoryF:\maven_workspace\workspace\piaoyi\service\src\test\resource s /directory /testResource /testResources 可以将不同环境的配置,通过属性定义的方式配置在pros中(pom),然后在项目配置文件中用法这些mavne属性,在构建不同的环境时,通过激活不同的frofile来打算用法哪个环境的配置,比如(该profiles不能被子项目继承,只对当前pom项目有效,所以推举配置在tings中): profiles profile dev /id properties db.driver com.mysql.jdbc.Driver /db.driver db.urljdbc:mysql://localhost:3306/test /db.url /properties/profile profile id test /id properties db.driver com.mysql.jdbc.Driver /db.driver db.urljdbc:mysql://192.168.0.10:3306/test /db.url /properties /profile /profiles 同时,需要在pom中的修改资源配置(定义在聚会项目中即可,可以被继承),如下,增强在pom中: build resources resource directory${project.basir}\src\main\resources /directory filtering ue /filtering /resource /resources testResources testResource directory ${project.bair}\src\test\resources /directory filtering true /filtering /testResource/testResources /build 然后在执行构建时,执行如下: n clean install -Pdev 激活该profile 也可以在settings.xml中举行配置,第1页共2页。

Maven学习总结(一)——Maven入门

Maven学习总结(一)——Maven入门

Maven学习总结(⼀)——Maven⼊门⼀、Maven的基本概念 Maven(翻译为"专家","内⾏")是跨平台的项⽬管理⼯具。

主要服务于基于Java平台的项⽬构建,依赖管理和项⽬信息管理。

1.1、项⽬构建 项⽬构建过程包括【清理项⽬】→【编译项⽬】→【测试项⽬】→【⽣成测试报告】→【打包项⽬】→【部署项⽬】这⼏个步骤,这六个步骤就是⼀个项⽬的完整构建过程。

理想的项⽬构建是⾼度⾃动化,跨平台,可重⽤的组件,标准化的,使⽤maven就可以帮我们完成上述所说的项⽬构建过程。

1.2、依赖管理 依赖指的是jar包之间的相互依赖,⽐如我们搭建⼀个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不⾏的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使⽤Maven来管理项⽬中使⽤到的jar包,Maven管理的⽅式就是“⾃动下载项⽬所需要的jar包,统⼀管理jar包之间的依赖关系”。

1.3、使⽤Maven的好处 Maven中使⽤约定,约定java源代码代码必须放在哪个⽬录下,编译好的java代码⼜必须放到哪个⽬录下,这些⽬录都有明确的约定。

Maven的每⼀个动作都拥有⼀个⽣命周期,例如执⾏ mvn install 就可以⾃动执⾏编译,测试,打包等构建过程 只需要定义⼀个pom.xml,然后把源码放到默认的⽬录,Maven帮我们处理其他事情 使⽤Maven可以进⾏项⽬⾼度⾃动化构建,依赖管理(这是使⽤Maven最⼤的好处),仓库管理。

⼆、Maven下载 下载地址: 下载完成后,得到⼀个压缩包,解压,可以看到maven的组成⽬录 Maven⽬录分析bin:含有mvn运⾏的脚本boot:含有plexus-classworlds类加载器框架conf:含有settings.xml配置⽂件lib:含有Maven运⾏时所需要的java类库LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三⽅软件等简要介绍三、Maven安装 1、⾸先要确保电脑上已经安装了JDK(要jdk 1.6+的版本),配置好JDK的环境变量,使⽤如下的两个命令检查检查JDK安装的情况。

Maven学习笔记一

Maven学习笔记一

Maven学习笔记⼀Maven 简介maven是apache下的⼀个开源项⽬,是纯java开发,⼀款服务于Java平台的⾃动化构建⼯具。

构建就是以我们编写的Java代码、框架配置⽂件、国际化等其他资源⽂件、JSP页⾯和图⽚等静态资源作为原材料,去⽣产出⼀个可以运⾏的项⽬的过程。

构建过程的⼏个主要环节清理:将以前编译得到的旧字节码⽂件删除,为下⼀次编译做准备编译:将Java源代码编译成字节码⽂件测试:⾃动调⽤junit程序报告:测试程序执⾏的结果打包:动态web⼯程打war包,java⼯程打jar包安装:将打包得到的⽂件复制打“仓库”中指定的位置部署:将动态Web⼯程⽣成的war包复制到Servlet容器指定的⽬录下,使其可以运⾏Maven好处1、普通的传统项⽬,包含jar包,占⽤空间很⼤。

⽽Maven项⽬不包含jar包,所以占⽤空间很⼩。

但还是需要jar的,只是没有存在于maven项⽬⾥⾯,⽽是存在本地仓库中。

2、依赖管理,只需要在pom.xml配置需要的插件,就能在在项⽬中使⽤。

主要是能够对jar包的统⼀管理,可以节省空间。

3、项⽬⼀键构建,maven可以进⾏编译、测试(junit)、运⾏、打包、部署。

⼀个 tomcat:run命令就能把项⽬运⾏起来。

4、可以跨平台5、应⽤于⼤型项⽬,可以提⾼开发效率。

Maven的安装配置1、下载安装Maven软件的核⼼⽂件:2、Maven环境变量配置前提是要配置jdk, maven3.3.9这个版本所需的jdk版本必须要1.7以上。

最终要运⾏的是maven软件中bin⽬录的mvn命令。

2.1 添加系统变量变量名:最好叫M2_HOME变量值:就是maven软件解压的⽬录,⽐如:F:\class32\apache-maven-3.3.92.2 把M2_HOME添加到系统变量的path末尾,注意加分号。

2.3 验证maven是否配置成功打开dos窗⼝,输⼊: mvn –vMaven仓库Maven有三种仓库1、本地仓库,⾃⼰维护如果想要修改maven的本地仓库位置,可以在maven的安装⽬录下的conf⽬录下的settings.xml配置⽂件中设置。

创建scala+maven的实验心得

创建scala+maven的实验心得

创建scala+maven的实验心得
x
一、开发环境
1.开发编辑器:IntelliJ IDEA
2.操作系统:Windows 10
3.项目构建工具:Maven
二、创建Scala项目
1.首先打开IDEA,点击Create New Project
2.在New Project页面,在左边的模板列表中,选择Maven,在右边的Project SDK中选择本机安装的JDK版本,并给项目取一个名字
3.点击Next,在下一页,进行设置Maven坐标,GroupId和ArtifactId要给出,Version默认即可
4.点击Next,进入另一个设置页面,点击Enable Auto-Import,勾选Create from archetype,在下拉列表中,选择
org.scala-tools.archetypes,点击Add Archetype按钮,填写groupId、artifactId、version,最后点击OK,返回主页面,点击Finish,即可生成Scala + Maven项目
5.打开工程,在src/main/scala/目录下会发现一个App.scala 文件,双击即可打开,按照提示,完成程序的编写
三、实验心得
如何创建scala+maven项目,其中对于maven的坐标要熟悉一下,
随后的编写程序,也要有一定的scala语言基础,以致能够熟练的使用,本次实验,仿照示例,编写了一个简单的“Hello World”,运行结果成功,从而搞定本次实验。

Maven有哪些优点和缺点

Maven有哪些优点和缺点

Maven有哪些优点和缺点⼀、Maven有哪些优点和缺点优点如下:1. 简化了项⽬依赖管理:2. 易于上⼿,对于新⼿可能⼀个"mvn clean package"命令就可能满⾜他的⼯作3. 便于与持续集成⼯具(jenkins)整合4. 便于项⽬升级,⽆论是项⽬本⾝升级还是项⽬使⽤的依赖升级。

5. 有助于多模块项⽬的开发,⼀个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,⽽不⽤⾃⼰去编译。

6. maven有很多插件,便于功能扩展,⽐如⽣产站点,⾃动发布版本等缺点如下:1. maven是⼀个庞⼤的构建系统,学习难度⼤2. maven采⽤约定优于配置的策略(convention over configuration),虽然上⼿容易,但是⼀旦出了问题,难于调试。

3. 当依赖很多时,m2eclipse ⽼是搞得Eclipse很卡。

4. 中国的⽹络环境差,很多repository⽆法访问,⽐如google code, jboss 仓库⽆法访问等。

⼆、Maven坐标⼀般maven使⽤[groupID,artifactId,version,packaging]来表⽰⼀个项⽬的某个版本,有时还会使⽤classifier来表⽰项⽬的附属构建,常见的附属构建有javadoc和sources包。

三、Maven常见的依赖范围有哪些?1. compile:编译依赖,默认的依赖⽅式,在编译(编译项⽬和编译测试⽤例),运⾏测试⽤例,运⾏(项⽬实际运⾏)三个阶段都有效,典型地有spring-core等jar。

2. test:测试依赖,只在编译测试⽤例和运⾏测试⽤例有效,典型地有JUnit。

3. provided:对于编译和测试有效,不会打包进发布包中,典型的例⼦为servlet-api,⼀般的web⼯程运⾏时都使⽤容器的servlet-api。

4. runtime:只在运⾏测试⽤例和实际运⾏时有效,典型地是jdbc驱动jar包。

maven个人工作总结

maven个人工作总结

maven个人工作总结在过去的一段时间内,我在Maven项目上取得了一些重要的成果和经验。

在这个项目中,我经历了一些挑战,但也学到了很多知识。

以下是我个人工作总结:1. 熟悉Maven的基本概念和工作原理:在项目开始之前,我花了一些时间研究Maven的基本概念和工作原理。

我了解了Maven的目录结构、POM文件的重要性以及如何配置和使用插件。

这使我能够更好地理解和使用Maven。

2. 配置和管理项目依赖:Maven的一个重要功能是可以轻松地管理项目的依赖。

在这个项目中,我需要使用一些外部的Java库和框架,并且这些库和框架经常需要更新。

通过正确配置POM文件,我能够方便地添加、删除和更新项目的依赖,同时确保版本的一致性和兼容性。

3. 构建和打包项目:使用Maven,我能够轻松地构建项目并生成可执行的JAR文件。

通过运行"Maven Clean Package"命令,Maven会自动编译源代码、运行测试并将生成的类文件打包成JAR文件。

这对于项目的发布和部署非常有帮助。

4. 管理项目的生命周期和构建过程:Maven提供了一套生命周期来管理项目的构建过程。

在这个项目中,我学会了使用Maven的不同生命周期和插件来执行特定的任务,例如编译代码、运行测试、生成报告等。

这使得项目的构建、测试和部署过程更加简单和可靠。

5. 解决依赖冲突和版本问题:在一个复杂的项目中,可能会有多个依赖库使用了相同的类或版本冲突的情况。

通过使用Maven的依赖管理功能,我能够很容易地解决这些冲突和版本问题。

我学会了排除特定的依赖、使用正确的版本范围和调整依赖的顺序,以确保项目的稳定性和正常运行。

总的来说,通过参与这个Maven项目,我不仅学到了很多关于Maven的知识和技巧,还提高了我的项目管理能力和技术水平。

我相信这些经验将对我的职业生涯和今后的工作有所帮助。

maven个人工作总结

maven个人工作总结

maven个人工作总结在过去的几个月里,我一直在使用Maven来管理项目依赖和构建。

通过使用Maven,我能够更高效地进行项目管理,并且提高了团队协作的能力。

下面是我在使用Maven期间的个人工作总结。

首先,Maven的依赖管理能力让我能够更加简单地管理项目的引用库。

在以前的项目中,当我需要引入一个新的库时,我必须手动将其下载并配置到项目中。

这样做不仅费时费力,而且容易出错。

而使用Maven,我只需要在pom.xml文件中添加对应的依赖项,Maven就会自动从中央仓库下载并配置到项目中。

这不仅省去了手动下载的麻烦,同时也保证了版本的统一性,减少了项目中不同开发者使用不同版本库造成的冲突。

另外,Maven的构建功能让项目构建过程更加可控和规范化。

通过使用Maven,我可以使用一条简单的命令来构建整个项目,而不需要手动编译每个模块。

这不仅提高了构建的速度,同时也减少了出错的可能性。

此外,Maven还可以自动执行项目的单元测试,这对于保证代码质量和项目稳定性非常重要。

通过在pom.xml文件中配置相关插件,我可以轻松地对项目进行测试,并且生成测试报告以供后续分析。

在项目开发过程中,我还利用了Maven的多模块功能,将复杂的项目拆解成多个模块。

通过模块间的依赖管理,我可以更好地组织代码结构,并且方便地在不同的模块之间跳转。

同时,Maven还允许我在跨模块间共享代码和资源,节省了重复编写的时间和精力。

除了依赖和构建管理外,Maven还有很多其他的功能和插件,例如项目文档生成、代码质量分析等。

通过使用这些功能,我能够更好地管理和维护项目,提高代码的可读性和可维护性。

此外,Maven还可以轻松集成其他工具和框架,例如SonarQube、Jenkins等,进一步提高工作效率和代码质量。

在使用Maven的过程中,我也遇到了一些挑战和问题。

例如,在配置文件中遇到了一些语法错误、依赖冲突等。

但是通过查阅官方文档和搜索相关问题,我逐渐掌握了一些常见的解决方法。

maven项目管理经验总结

maven项目管理经验总结

MAVEN管理项目这篇文章只是针对过去使用maven工具的一个经验总结,把项目中经常使用的一些操作大致介绍一下,可能介绍的不完全,如果想了解更多,你可以去关注一下这本书《Maven权威指南中文版及相关实例》;目前我们项目使用2.2.1版本的,所以下面的实例我会以这个版本并结合伦敦奥运项目进行介绍。

1.为什么要使用Maven,使用Maven有什么好处maven是一个可以帮助你进行项目编译、文档管理、报告管理、包依赖管理、SCM管理、发布等的工具,它可以协助你完成以下工作:1.快速创建一个工程文件2.几乎不用做任何设置,可以立即进行编译、测试、打包等工作。

以前用Ant的时候,也可以很方便的做这些工作,但是写Ant的build.xml文件是一件很烦琐的事情。

3. 创建项目文档非常容易,可以自动生成一个web site,记录你的项目情况、版本信息、两个版本之间的change list等。

4.非常方便的远程发布、scm(cvs)管理功能。

5.依赖管理功能。

这个功能是我非常喜欢的功能。

我们在做多个不同的Java项目时,每个项目所用到的库文件基本都是大同小异的,通常的做法是每个项目下面都会复制一份这些库文件,甚至会把这些库文件都提交到cvs上去,这样带来的问题不仅是增大了项目占用的硬盘空间,而且也使包管理很混乱,当我需要在另外的机器上进行工作时,我通常需要重新建立我的工程文件。

maven所采用的形式,类似于yum、apt、ports等Linux/Unix的包依赖管理模式,你只需要在配置文件中指明你依赖什么样的包,在用maven编译的时候,它首先会检查你的本地仓库中是否存在该库文件,如果没有,它就会自动去下载,默认从/maven/上下载,对于公司内部,可以创建一个自己的库服务器;2.Maven的安装1、window 2000/xp下的安装解压缩apache-maven-2.2.1-bin.zip到你希望maven 2.0.2的所在目录。

Maven实战经验总结

Maven实战经验总结

查看当前pom文件中显示声明的jar包,及这些显示声明的jar中隐式引入的依赖jar包。

这样就可以查看有哪些隐式的依赖jar会导致jar包冲突了
4、依赖中有log4j-over-slf4j.jar,但将项目打包后不包含里面的org.apache.log4j.Log4jLoggerFactory.c lass
a、
b、,接下来两步选择默认,直接点击Next
c、
d、创建好Maven项目后默认项目名为Artifact Id,可在eclipse中通过F2重命名的方式修改项目名称
6、常用中央库地址
中央库配置地址:
:8081/nexus/content/groups/public
/content/groups/public/
Maven用命令如何强制更新依赖包:mvn clean install -e -U -e详细异常 -U强制更新,通过此命令发现如下异常:8、找不到依赖包所在的中央库。

maven总结

maven总结

maven总结
Maven是一个流行的Java项目管理工具,它可以自动化构建、测试和部署Java应用程序。

Maven的主要目标是简化构建过程,提高开发人员的生产力。

在本文中,我们将总结Maven的主要特点和优势。

1. 依赖管理
Maven可以自动管理项目依赖关系,它可以自动下载和安装所需的库和框架。

这样,开发人员就不必手动下载和安装这些库,从而节省了时间和精力。

2. 项目结构
Maven强制执行一种标准的项目结构,这使得项目更易于管理和维护。

开发人员可以快速了解项目的结构和组织,从而更容易地添加新的功能和模块。

3. 构建过程
Maven可以自动化构建过程,它可以自动编译、测试和打包应用程序。

这样,开发人员就可以专注于编写代码,而不必担心构建过程的细节。

4. 插件系统
Maven具有强大的插件系统,可以扩展其功能。

开发人员可以使用现有的插件或编写自己的插件来满足特定的需求。

5. 多模块支持
Maven支持多模块项目,这使得大型项目更易于管理和维护。

开发人员可以将项目分解为多个模块,每个模块都有自己的构建过程和依赖关系。

6. 中央仓库
Maven有一个中央仓库,其中包含了大量的库和框架。

开发人员可以从中央仓库中下载所需的库和框架,从而节省了时间和精力。

Maven是一个强大的Java项目管理工具,它可以自动化构建、测试和部署Java应用程序。

它的主要优势包括依赖管理、项目结构、构建过程、插件系统、多模块支持和中央仓库。

如果您是Java开发人员,那么Maven是您不可或缺的工具之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

maven使用经验与心得整理
概述
日常开发中,我们用到的maven相关功能大概一下几种:
1、管理jar依赖
2、构建项目(打包、编译等)
3、发布项目(共享、上传至服务器、供他人使用)
简单介绍
1、管理依赖
jar一般在pom.xml文件的中配置,以spring core为例,一般格式如下:
其中groupId一般为项目(jar war pom等)的发布机构名称;
artifactId为项目名称;
version为项目版本;
在项目编译打包的时候,ide会自动到maven仓库去查找相应的jar文件,打包并存放在项目的相应路径下(如web项目的lib目录下)
2、构建项目:
这里所说的构建项目主要指打包、编译、运行测试用例等操作,即maven的生命周期中的打包过程。

最常用的就是compile了,一般项目修改代码以后都要重新编译,然后加载到tomcat中运行调试。

其它的还有clean、package等比较常用的操作,请见详细说明–生命周期部分
3、发布项目:
如果我们写一些通用框架,或者自己封装了一些常见的工具类,想要打包为jar并且供他人使用,那么我们可以通过maven发布到公共仓库(私服)供他人下载依赖使用。

比如每个公司都会有自己的框架,持久层、控制层或者其它功能等。

当我们没有使用maven 的时候,我们是直接把别人的jar拷贝到项目的library目录下,而现在我们有了maven就不用自己到处拷贝jar包了,只需要在发布的时候找到别人发布到仓库时候写的groupId artifactId version等信息就能直接添加依赖了,也就是相当于第一步的依赖管理。

4、多模块
maven实际上通过多模块的思想来组织依赖的,每一个项目或者jar都是一个模块,我们可以把一些通用的,不常变动的东西写在一些指定的模块下,在另外一个项目中引用依赖(这里就有点类似【1、依赖管理】,这样一来可以让项目结构更清晰、方便别人依赖使用,如果项目都是一个模板,也可以复用等等
4、生命周期
maven将项目的生命周期大致分为9个,分别为:clean、validate、compile、test、package、verify、install、site、deploy
我经常用的也就是clean、compile、package、install、deploy,而且deploy相对也较少,因为很少发布公共的项目供别人依赖使用,基本也就是项目打包为war时候会打包到私服,运维人员可以到私服上直接下载对应版本。

其中clean即清除项目中编译文件和本地仓库中已打包的文件(即本地install的文件,install 后面讲到)
compile即编译项目中的java文件,并存放在项目的编译目录(根据不同的配置,编译目录也不一样)
test 即运行项目中的测试用例文件,如果测试用例未通过,也会打包失败,另,这里的test 过程可以在pom中通过配置跳过。

(想想也是,我项目都好了,其实不是非要跑测试用例的)
package 即将本地编译好的文件打包为war 或者jar(这是最常见的两种,其他相关自行了解) verify 我很少用到,没怎么了解过
install 将打包的代码存放到本地maven仓库,可供本地其它项目依赖使用
site生成项目报告,站点,发布站点,这个也很少用到,不是很清楚
deploy 将打包在本地仓库中的项目发不到服务器,供他人依赖使用。

相关文档
最新文档