初识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
- 初识maven
- 初识Maven
- 初识Maven
- Maven初识
- 初识Maven
- 初识Maven
- maven初识
- 初识 maven
- 初识Maven
- maven初识
- 初识maven
- 初识 maven
- maven初识
- 初识maven
- Maven初识
- 【maven】---初识
- 初识Maven
- maven初识
- Linux /dev目录详解
- Linux挂载/卸载磁盘
- Hadoop还是Xen?
- linux 配置IP
- openfire 启动说明(一)
- 初识maven
- WebService CXF学习:对象传递
- 深入理解javascript(9):执行上下文(下)
- CXF WebService中传递复杂类型对象
- Web Service传输文件
- Apache CXF实战之四 构建RESTful Web Service
- svn 代码交由git 管理
- 常用排序算法之基数排序
- 面向对象程序设计上机练习十一(运算符重载)