初识maven

来源:互联网 发布:vscode 远程编辑 编辑:程序博客网 时间:2024/05/22 04:04

Maven

概念

项目构建和管理软件。核心是一个pom.xml文件

目录

src/main/java  代码存放位置 ||  src/test/java  测试代码存放位置target 目录,maven自动生成的执行命令后将一些文件存放的位置。

maven目录结构

  • bin 包含java一些命令,因此要在安装了java基础上才可以使用maven
  • boot 包含一个jar包,这个是类加载器框架
  • conf 配置文件
  • lib jar包

maven常用命令

  • 使用命令之前配置环境变量:M2_HOME:指maven的大文件夹。path目录,配置到bin目录。配置好后使用mvn -version查看是否配置成功。
  • mvn compile 编译
  • mvn install 将所在项目打包安装到本地仓库
  • mvn clean 清除target目录
  • mvn package 将所在项目打包,不安装到本地仓库
  • mvn test 执行src/test下的文件

pom文档

    <groupid>java文件包名</groupid>--要管理的目录名,当其他项目要依赖它时将其jar包存放的目录。例如此处写org.wangxinyu.com。那么在本地仓库生成的依赖包就放在指定目录下的org/wangxinyu/com下。jar包名字为artifactid.version.jar    <artifactid>项目名</artifactid>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar(打包方式,jar或者war)</packaging>    依赖标签    <dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.10</version>    scope表示以来的范围,有几个取值,test表示测试时使用,compile代表编译时使用,provided代表测试和编译时存在,最后打成war包不存在    <scope>test</scope>    </dependency>    这个依赖标签代表jar包的名字,artifactId.version名。例如上面的依赖的jar包名叫 junit.4.10.jar。    消除依赖写法,有些依赖不需要,就需要使用这个    <exclusions>    <exclusion>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>    </exclusion>    </exclusions>

仓库

仓库分为本地仓库,中央仓库,远程仓库。本地仓库就在本地的一个文件夹中。中央仓库为公司局域网中,在某一台主机上设置一个中央仓库远程仓库指apache公司的仓库,为本地和中央仓库找不后,要寻找的仓库。

继承与聚合

聚合:通过发布一个模块,将其与所有模块都进行发布的一种方式。一般设定一个不存在的模块,然后使用<moudles><moudle></moudle></moudles>标签将要一起发布的模块包含进来。继承:用于某一模块中包含了一些依赖,而这些依赖是其他模块也需要用到的,于是就可以使用继承,这样子模块就不用重复写那些依赖了。子模块通过使用parent标签引入父模块,通常,父模块也是特意创建用来供子模块使用的,无特殊含义。对于一些模块想要有选择的继承父模块的依赖,那么可以使用dependencyManagement标签进行筛选。

继承与聚合的区别于共同

  • 区别:1. 聚合模块知道被聚合的模块,而被聚合的模块不知道聚合的模块。2.子模块知道自己继承了哪个模块,而父模块不知道自己被哪个模块继承了。
  • 共同:1. 都要知道自己父模块的pom文件位置。 2. 父pom的packing子标签里面都要pom。

私服nexus

nexus是为了满足在某些情况下没有外网的时候,让maven去nexus上去下载资源的一种工具。充当一个远程仓库的作用。通常解压后可以设置一个bin目录下的环境变量,以便命令可以找到它。使用nexus install进行nexus服务的安装,之后会发现在管理——>服务中找到了未开启的nexus服务,可以手动打开,也可以在命令行下继续敲nexus start开启命令。install,start等命令再bin目录下的jsw下的windows-64这个目录下,这个根据系统不同执行不同文件夹下的命令。可以看到consule,start,stop,install,uninstall等命令都在。sonatype-work目录是nexus附加的一个目录,这个目录存放nexus进行某些操作后对一些文件的存放目录。例如上传到私服的jar包,将会在sonatype-work\nexus\storage\thirdparty\目录下找到。

访问nexus

安装好后,浏览器输入:localhost:8081/nexus即可访问。登录用户名为:admin;密码:admin123

!Maven三套生命周期

clean lifecycle:在构建之前进行一些清理工作default lifecycle:构建的核心部分,编译,测试等sitelifecycle:构建站点,报告。三套周期是相互独立,可独立执行

clean周期

clean周期分为:pre-clean;clean;post-clean。maven命令存在一种覆盖原则,例如clean周期来说,如果执行clean周期的第二个阶段,命令:mvn clean那么clean周期的第一个阶段pre-clean也会跟着执行。

site周期

分为:pre-site执行生成站点前的工作;site生成站点文档;post-site生成站点之后的工作;site-deploy将站点部署到服务器中。后两个经常用于生成和发布站点。

!default生命周期

  • validate
  • generate-sources
  • process-sources
  • generate-resources
  • proccess-resources 复制并处理资源文件至目标目录,准备打包
  • complie 编译项目源代码
  • process-classes
  • generate-test-sources
  • proccess-test-sources
  • generate-test-resources
  • process-test-resources 复制并处理资源文件至目标测试目录。
  • test-compile
  • process-test-classes
  • test 使用合适的单元测试框架进行测试。
  • prepare-package
  • package
  • pre-integration-test
  • package 将编译好的代码打包,jar或者war。
  • pre-integration-test 一体化
  • integration-test
  • post-integration-test
  • verify 核实,验证
  • install 安装至本地仓库
  • deploy 发布到远程中央仓库。

测试 mvn test

测试时,maven如何知道我们要测试哪些类,其实这是maven的另一种原则:约定。maven会在src/test/java目录下寻找:Test*.java,*Test.java,*TestCase.java三种文件进行测试,名字大小写没有关系。

忽略测试

当我们要进行compile等命令时根据maven原则,必然会执行测试部分,这可能在有时会拉低我们的效率。那么如何让其在执行时忽略呢?在配置插件时加入configuration标签,skiptests为true代表忽略所有测试类。<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.5</version><configuration><skipTests>true</skipTests></configuration></plugin>如果想要忽略某些测试类,就在执行命令:mvn xxx -Dtest=xxx,xxx加上-Dtest这个参数即可。或者在配置文件中加上<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.5</version><configuration><includes><include>**/*Test.java</include></includes><excludes><exclude>**/UserTest.java</exclude></excludes></configuration></plugin>include代表参与测试的,exclude代表不参与的。
0 0