maven是用于java的自动化构建工具。
1.下载:http://maven.apache.org/download.cgi
下载下面截图标红处的文件
然后直接解压可以得到文件夹,得到如下文件夹
不用安装,直接放置到你的目标盘位置
2.配置(前提是电脑已经装好jdk)
在电脑加入环境变量
M2_HOME D:\SoftInstall\apache-maven-3.5.2
path ;D:\SoftInstall\apache-maven-3.5.2\bin
3.测试是否安装成功。
在cmd控制台输入:mvn -v,然后回车。结果如下:
4.maven常用命令
mvn compile
mvn clean (note:旧版本的maven,使用这个命令,执行之后必须执行mvn compile或者mvn test)
mvn test-compile
mvn test
mvn package
mvn install
mvn site
5。maven项目修改eclipse的context root:
在.pom文件的build节点内配置finalName节点,finalName节点的值写入项目的名称。
maven --> update project... ,context root变成设置的值。
6。maven项目创建web 工程
创建普通的maven工程 --> 右击项目 --> properties --> 搜索 project facets --> 去除 dynamic web module选项 --> 点击 apply -->
重新勾选 dynamic web module --> 出现 further configuration availuable... ,点击 --> 出现 modify facets project 对话框 -->
勾选 generate web.xml deployment descriptor ,修改content directory为src/main/webapp --> ok -->创建web 完成。
7。java maven项目和java web maven项目两者项目结构的比较:
两种工程在java视图下的截图:
两种工程在java ee视图下的截图:
注意:在开发的时候最好是切换到java视图下。java web工程的结构还不完全和java工程一样,需要做一些改变。
eclipse工作区在三种不同模式下工程结构不一样
在不同视图java和java ee下,工作区切换到package explorer模式统一呈现工程结构。
8、社区版idea使用tomcat:
1)、创建maven工程
2)、pom.xml中配置tomcat插件:
1 <build> 2 <finalName>testfinalName> 3 <plugins> 4 <plugin> 5 <groupId>org.apache.tomcat.mavengroupId> 6 <artifactId>tomcat7-maven-pluginartifactId> 7 <version>2.2version> 8 <configuration> 9 <port>8080port> 10 <path>/path> 11 <uriEncoding>UTF-8uriEncoding> 12 <server>tomcat7server> 13 configuration> 14 plugin> 15 plugins> 16 build>
3)、idea做如下配置:
4)、测试: localhost:8080
出现以上结果表示成功。
9、打包jar到本地仓库:
mvn install:install-file -DgroupId=xxx -DartifactId=xxx -Dversion=1.0.0 -Dpackaging=jar -Dfile=目标jar位置
例如,打包lucene-analyzers-3.6.2.jar,首先进入到jar包所在位置,然后使用命令:
mvn install:install-file -DgroupId=org.apache.lucene -DartifactId=lucene-analyzers-common -Dversion=3.6.2 -Dpackaging=jar -Dfile=lucene-analyzers-3.6.2.jar
10、maven常用指令学习:
mvn archetype:generate #这个指令可以生成基本的maven工程的骨架,指令开始之后按照提示输入gav,截图如下:
mvn compile #这个指令的作用是编译源码,进入刚才创建的maven工程的第一层目录使用该指令,执行效果如下:
mvn test-compile #这个指令的作用是编译测试代码,直接在maven工程的第一层执行该指令,执行效果如下:
mvn test # 运行应用程序中的单元测试,同上执行,执行效果如下:
mvn site # 生成项目相关信息的网站 ???
mvn package #该指令的作用是生成 jar 文件
mvn install #在本地maven仓库中安装 jar 文件
目录结构基本没变。
mvn -Dmaven.test.skip=true #忽略测试文档编译
mvn clean #清除target目录中的内容,执行效果如下:
mvn clean compile #编译java代码,补充:效果同上
mvn clean package #打包,补充:效果同上
mvn clean test #进行单元测试代码执行,补充:效果同上
mvn clean deploy # 部署到版本仓库 ????
mvn clean install # 安装到本地maven仓库中 补充:效果同上
mvn dependency:list #查看项目pom.xml已解析依赖
mvn dependency:tree #列出项目pom.xml的依赖树
mvn dependency:analyze #查看依赖的工具,可以分析依赖是否出现问题
mvn help:system #从中央仓库下载文件至本地仓库 ???? 效果是:下载了一堆东西,然后在控制台看到平台属性细节,包括环境变量和系统属性
mvn help:active-profiles #查看当前激活的profiles
mvn help:all-profiles #查看所有profiles
mvn help:effective -pom #查看完整的pom信息 效果是:在控制台打印出详尽的pom.xml的内容
mvn clean package -Dmaven.test.skip=true 跳过test打包
小结:几乎每一个指令都有一个插件在支撑之运行。
疑惑:
1、mvn clear install和mvn clear deploy的区别
intasll 安装jar到本地maven仓库
deploye 安装jar到非本地maven仓库(远程安装)
2、clear的作用是什么
这将在启动之前删除具有所有构建数据的target目录,保证它是全新的。
转载一篇文章 https://blog.csdn.net/fullstack/article/details/28269471 以上指令的学习参考该文章
插件(更多插件:https://maven.apache.org/plugins/)
maven-jar-plugin
配置pom.xml使jar打包后可执行,可手动添加Main-Class和Class-Path到MENIFEST.MF文件
1 <plugin> 2 <groupId>org.apache.maven.pluginsgroupId> 3 <artifactId>maven-jar-pluginartifactId> 4 <version>3.1.0version> 5 <configuration> 6 <archive> 7 <manifest> 8 <addClasspath>trueaddClasspath> 9 <mainClass>com.rui.SendermainClass> 10 <classpathPrefix>lib/classpathPrefix> 11 manifest> 12 archive> 13 configuration> 14 plugin> 15 16 <plugin> 17 <groupId>org.apache.maven.pluginsgroupId> 18 <artifactId>maven-dependency-pluginartifactId> 19 <version>3.1.1version> 20 <executions> 21 <execution> 22 <id>copy-dependenciesid> 23 <phase>packagephase> 24 <goals> 25 <goal>copy-dependenciesgoal> 26 goals> 27 <configuration> 28 <outputDirectory>${project.build.directory}/liboutputDirectory> 29 <overWriteReleases>falseoverWriteReleases> 30 <overWriteSnapshots>falseoverWriteSnapshots> 31 <overWriteIfNewer>trueoverWriteIfNewer> 32 configuration> 33 execution> 34 executions> 35 plugin>
maven-shade-plugin
打包项目成ubur.jar,把项目依赖的jar放在一起,jar包可执行。命令:mvn package
1 <project> 2 ... 3 <build> 4 <plugins> 5 <plugin> 6 <groupId>org.apache.maven.pluginsgroupId> 7 <artifactId>maven-shade-pluginartifactId> 8 <version>3.1.1version> 9 <executions> 10 <execution> 11 <phase>packagephase> 12 <goals> 13 <goal>shadegoal> 14 goals> 15 <configuration> 16 <transformers> 17 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 18 <mainClass>org.sonatype.haven.HavenClimainClass> #指定main方法所在的类的完全限定名 19 transformer> 20 transformers> 21 configuration> 22 execution> 23 executions> 24 plugin> 25 plugins> 26 build> 27 ... 28 project>
补充:
mvn clean install -Dmaven.test.skip=true 跳过test的编译和打包,直接编译和打包,安装非test
mvn dependency:sources 下载依赖jar包源码
mvn archetype:generate: -DarchetypeArtifactId=maven-archetype-webapp 创建web工程结构
2018-08-26 10:01:49
maven测试
maven测试由插件maven-surefire-plngin支持。在约定大于配置的情况下,maven默认会去src/test/java中执行如下格式的文件Testxyz.java或者XyzTest.java。也就是以Test开头或者以Test结尾的文件。
做单元测试时可以使用如下命令行:
1 mvn -Dtest=XyzTest test
假如需要测试多个文件时,可以使用逗号或者星号进行指定,使用如下格式的命令行:
1 mvn -Dtest=Xyz1, Xyz2, Xyz3 test 2 3 mvn -Dtest=Xyz* test
举个例子:如果想要测试windows中是否能连接上虚拟机上的linux的mongodb
工程结构是这样的:
测试代码:
1 package com.rui; 2 3 import java.util.Set; 4 import org.junit.Test; 5 import org.junit.runner.RunWith; 6 import org.springframework.test.context.ContextConfiguration; 7 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 8 import com.mongodb.DB; 9 import com.mongodb.Mongo; 10 11 @RunWith(SpringJUnit4ClassRunner.class) //junit4 12 @ContextConfiguration(locations={"classpath*:spring-mongodb.xml"}) 13 public class MongodbConnTest { 14 15 @Test 16 public void connection(){ 17 try{ 18 Mongo mongo = new Mongo("192.168.0.102", 27017); //连接mongodb 19 DB db = mongo.getDB( "rui" ); //获取db 20 SetcollectionNames = db.getCollectionNames(); //获取collection 21 for (String name : collectionNames) { 22 System.out.println("collectionName called: "+name); 23 } 24 25 }catch(Exception e){ 26 e.printStackTrace(); 27 } 28 } 29 30 }
执行测试代码:
1 mvn -Dtest=MongodbConnTest test
测试结果:
2018-08-30 17:50:19
假如需要测试测试类中的方法,maven-surefire-plugin提供一个符号#,通过指定"[测试类]#[测试方法]",然后执行命令mvn -Dtest=ClasName#testMethod test
也支持使用符号*,以类似正则表达式的形式匹配所有相关的方法,命令是mvn -Dtest=ClassName#test* test
note:
maven-surefire-plugin-2.7.3支持
参考文档:
http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
http://maven.apache.org/surefire/maven-surefire-plugin/
===================我是分界的线=========================
ps:
了解了如何使用maven命令运行工程,测试类和方法,再也不用因为电脑配置低装不起eclipse和idea,pycharm(虽然功能强大,很好用,但是电脑会很卡。。。)等等而烦恼了。(*^▽^*)
linux和虚拟机是伟大的发明之两。^_^
用命令行工作很快乐。(*^▽^*)
v1.1
①增加了maven项目修改eclipse的context root的方法。
②增加了maven命令maven clean的使用注意
v1.2
① 增加了创建maven web项目的步骤
v1.3
① 增加了两种工程在两种视图下结构的比较。
v1.4
①增加了社区版idea使用tomcat设置步骤
v1.5( 2018-05-22 15:49:25)
增加了打包jar包到本地 仓库指令
v1.6 (2018-06-04 19:48:00)
修改了eclipse工作区工程结构统一的错误。
v1.7
增加了补充的内容