天天看点

maven学习笔记2

在eclipse中安装maven插件以及创建maven项目: ①在eclipse4.0及MyEclipse中就不需要安装maven插件,在window--preference中可以查看是否有maven插件,没有的话就需要安装Maven插件,直接复制Maven插件到eclipse安装目录中的dropins中,然后修改eclipse.ini,在这个文件里的512m后面添加-vm,换行,再添加jdk/bin/javaw.exe保存。 ②eclipse是默认运行在jre之上的而maven需要jdk的支持,需要tools.jar在jdk/lib目录中,所以修改eclipse的JRE,java---Installed JREs--ADD--Next--把本地JDK的目录放到JRE home中,并设置Dmaven.multiModuleProjectDirectory=$M2_HOME--最后勾选JDK ③更改maven本地的配置Installactions---ADD---把本地的maven目录放进去 ④修改setting的路径会出现的问题:1、如果版本不匹配 则mvn -v查看maven的jdk版本,然后在eclipse中配置当前使用的jdk2、run as-->Maven build...-->在goals中compile(可以在此处使用其他的命令,如:package)---》run若报-Dmaven.multiModuleProjectDirectory错误,则在选项-->java--》installed JRES 中设置jdk的参数,添加上“-Dmaven.multiModuleProjectDirectory=$M2_HOME”

Maven的三个生命周期:clean 清理项目:又分为三个阶段(pre-clean执行清理前的工作、clean清理上一次构建生成的所有文件、post-clean执行清理后的文件)default 构建项目(最核心):compile、test、package、install都属于defaultsite 生成项目站点(根据POM的信息自动生成站点):pre-site 在生成项目站点前要完成的工作、site 生成项目的站点文档、post-site 在生成项目站点后要完成的工作、site-deploy 发布生成的站点到服务器上 项目管理利器(Maven)——Pom.xml解析 <name>项目的描述名</name> <url>项目的地址</url> <description>项目描述</description> <developers>开发人员信息</developers> <licenses>许可证信息</licenses> <!-- 依赖列表 --><dependencies><!-- 依赖项 --><dependency><groupId></groupId><artifactId></artifactId><version></version><type></type><scope>依赖的范围</scope><optional>设置依赖是否可选,默认是false</optional><!-- 排除依赖传递列表 --><exclusions><exclusion></exclusion></exclusions></dependency></dependencies><!-- 依赖的管理,一般定义在父模块中,由子模块去继承 --><dependencyManagement><dependencies><dependency></dependency></dependencies></dependencyManagement><!-- 对构建行为提供相应的支持 --><build><!-- 插件列表 --><plugins><plugin><!-- 指定坐标 --><groupId></groupId><artifactId></artifactId><version></version></plugin></plugins></build><!-- 一般在子模块中指定所继承的父模块 --><parent></parent><!-- 模块列表 --><modules><module></module></modules>

项目管理利器(Maven) ——依赖范围(classPath:编译,运行,测试) 1.compile:默认范围,编译测试运行都有效 2.provided:在编译和测试时有效(servlet API) 3.runtime:在测试和运行时有效(jdbc驱动) 4.test:只在测试时有效5.system:在编译和测试时有效,与本机系统关联,可移植性差6.import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置 项目管理利器(Maven) ——排除依赖 假设B项目依赖A项目,C项目又依赖B项目,那么在C项目中运行compile时,在引进B项目的同时,自动就把A项目也引进来了。如果不想将A项目导入的话,可以使用exclusions下设置exclusion,然后将A项目的坐标添加即可将A项目排除在Maven Dependeccies之外。 修改maven默认jre版本, 在setting.xml中更改 <profile> <id>jdk-1.7</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile> 剔除传递依赖标签 <exclusions> <exclusion> --引入传递依赖的坐标 实现剔除某个传递依赖  </exclusion></exclusions>

项目管理利器(Maven)——依赖冲突<br> 如果C和D依赖了一个不同版本的相同的构件C。<br> ①:短路优先:<br>会优先解析路径短的版本(D)。<br>A -> B -> C -> X(jar)<br>A -> D -> X(jar) 优先解析短的(两个X(jar)版本不同) ②:先声明先优先:A->C->jar,A->D->jar<br>如果路径长度相同,则谁先声明,先解析谁(C)。 依赖冲突 不同版本的构件1.短路优先2.先声明先优先 如果路径长度相同,则谁先声明,先解析谁

项目管理利器(Maven)——继承 继承: 多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父级的POM.XML然后再继承此POM.XML。 注意: 1. packaging 改为pom。 2. dependencyManagement 中并不提取依赖 。 3. property中定义了unit版本号,之后可以引用。 4. 父类parent中的main和test没有意义,可以删除。 项目管理利器(Maven)——聚合 1.聚合:如果项目D依赖项目C,项目C依赖项目B,项目B依赖项目A,我们需要一个个安装这项项目,在Maven中有一种方式可以将多个项目一次性安装,这就是聚合的概念。简单讲就是,需要人工多次操作的,只要MAVEN能理解,一次性告诉他,他就能帮我们做这件单调烦人的事情了。——使用<modules></modules>这个标签。 2.继承:多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父级的POM.XML然后再继承此POM.XML如图中version可以用类似EL表达式的写法,将其在属性中定义,另外父类不必写方法,可以将文件删除掉 使用maven创建java工程: -DarchetypeArtifactId=maven-archetype-quickstart 创建Web工程: -DarchetypeArtifactId=maven-archetype-webapp

Maven 配置web项目 1:打开Eclipse 2:创建Maven项目,选择archetype-webapp模板 3:解决Servlet没有生命依赖的问题,在pom.xml中添加servlet的依赖, 可以去中央仓库选择servlet版本例如: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0-b01</version> </dependency> 4:手工完善Maven约定好的目录结构可以在navigator窗口中手动新建../src/main/java../src/test/java 5:Project Explorer中更新项目 6:创建项目的输出目录build path中设置输出路径output folder,确保每个module都输出在../tartet/classes目录中 7:将Maven项目转换为Web项目右击-属性-project facets-勾选动态模板(Dynamic Web Module) 8:修改部署时配置去掉多余的配置项例如:测试代码右击-属性-Deployment Assembly-删除多余的配置项(测试代码) 9:使用package命令打包项目—使用jetty这个插件(在Maven的中央插件库中寻找)作为Web容器,在中央仓库查找jetty的plugin坐标配置到pom.xml中pom.xml例子: <build> <finalName>webbproject-demo</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId>  <artifactId>tomcat7-maven-plugin</artifactId>  <version>2.2</version><executions><execution> <phase>package</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 扩展--Tomcat作为Web容器,需要在Tomcat的官网上下载一个Tomcat的Maven插件 在tomcat官网找到Maven Plugin的坐标配置到到pom.xml中例如:  <build> <finalName>webbproject-demo</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId>   <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version>   <executions>  <execution>   <!-- 在打包成功后来运行tomcat服务 --> <phase>package</phase> <goals>   <goal>run</goal> </goals>   </execution> </executions> </plugin>   </plugins>  </build> </project>

继续阅读