maven---->配置,指令,插件,使用
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插件:
<build> <finalName>test</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/</path> <uriEncoding>UTF-8</uriEncoding> <server>tomcat7</server> </configuration> </plugin> </plugins> </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文件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.rui.Sender</mainClass> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin>
maven-shade-plugin
打包项目成ubur.jar,把项目依赖的jar放在一起,jar包可执行。命令:mvn package
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>org.sonatype.haven.HavenCli</mainClass> #指定main方法所在的类的完全限定名 </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> ... </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结尾的文件。
做单元测试时可以使用如下命令行:
mvn -Dtest=XyzTest test
假如需要测试多个文件时,可以使用逗号或者星号进行指定,使用如下格式的命令行:
mvn -Dtest=Xyz1, Xyz2, Xyz3 test mvn -Dtest=Xyz* test
举个例子:如果想要测试windows中是否能连接上虚拟机上的linux的mongodb
工程结构是这样的:
测试代码:
package com.rui; import java.util.Set; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.mongodb.DB; import com.mongodb.Mongo; @RunWith(SpringJUnit4ClassRunner.class) //junit4 @ContextConfiguration(locations={"classpath*:spring-mongodb.xml"}) public class MongodbConnTest { @Test public void connection(){ try{ Mongo mongo = new Mongo("192.168.0.102", 27017); //连接mongodb DB db = mongo.getDB( "rui" ); //获取db Set<String> collectionNames = db.getCollectionNames(); //获取collection for (String name : collectionNames) { System.out.println("collectionName called: "+name); } }catch(Exception e){ e.printStackTrace(); } } }
执行测试代码:
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
增加了补充的内容
maven---->配置,指令,插件,使用的更多相关文章
- maven配置checkstyle插件对代码规范进行静态检查
checkstyle配置的官方网站:http://checkstyle.sourceforge.net/config.html (1)新建maven项目,配置checkstyle插件 pom.xml ...
- Maven 配置tomcat插件
使用tomcat插件来访问maven 1 先下载tomcat插件(在pom中配置) <!-- 配置Tomcat插件 --> <plugin> <groupId>or ...
- maven 配置jetty 插件
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin ...
- Maven -Maven配置tomcat插件 两种
Maven Tomcat插件现在主要有两个版本,tomcat-maven-plugin和tomcat7-maven-plugin,使用方式基本相同. tomcat-maven-plugin 插件官网: ...
- maven 配置jetty插件
<build> <finalName>shiroweb</finalName> <plugins> & ...
- Maven配置插件跳过测试代码的编译和运行
Maven配置插件跳过测试代码的编译和运行: <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins< ...
- maven中jetty插件配置
maven中jetty插件的配置,可用于项目在内置jetty服务器中的部署. <plugin> <groupId>org.mortbay.jetty</groupId&g ...
- maven项目配置findbugs插件 使用git钩子控制代码的提交
maven项目配置findbugs插件对代码进行静态检测 当发现代码有bug时,就不让用户commit代码到远程仓库里 没有bug时才可以commit到远程仓库中 (1)新建maven项目 ,配置fi ...
- maven常见指令和插件
总结自:https://www.cnblogs.com/ysocean/p/7416307.html#_label1及 https://blog.csdn.net/zhaojianting/artic ...
- Maven项目配置tomcat插件实现项目自动部署到远程服务器
1.tomcat配置 在tomcat目录中的conf目录下找到tomcat-users.xml配置文件,然后搜索tomcat-users,进行tomcat用户的角色和权限配置,如下: <tomc ...
随机推荐
- SQL server无法连接上服务器的相关问题
安装MySql以后,SQL server突然就连接不上服务器了,问了老师,说是啥进程关闭了,都打开了也没搞好,都准备重装了,结果看到度妈上面的一篇文献,原来是SQL server MSSQLSERV ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- Python常用库之functools
functools 是python2.5被引人的,一些工具函数放在此包里. python2.7中 python3.6中 import functools print(dir(functools)) [ ...
- vue学习【第五篇】:Vue组件
什么是组件 - 每一个组件都是一个vue实例 - 每个组件均具有自身的模板template,根组件的模板就是挂载点 - 每个组件模板只能拥有一个根标签 - 子组件的数据具有作用域,以达到组件的复用 根 ...
- linux内核中的IPIs是什么?
答: 处理器间中断(Interprocessor Interrupts)
- HDU 5929 Basic Data Structure(模拟 + 乱搞)题解
题意:给定一种二进制操作nand,为 0 nand 0 = 10 nand 1 = 1 1 nand 0 = 1 1 nand 1 = 0 现在要你模拟一个队列,实现PUSH x 往队头塞入x,POP ...
- p3168 [CQOI2015]任务查询系统(差分+主席树)
恕我才学浅薄,一开始想到的是树状数组+线段树,然后看了题解才第一次见到了差分这种神奇的科技 仔细想想,主席树的本质不就是前缀和嘛,加上一个差分也是可以的,没想到真是罪过罪过 对时间维护一个差分 在Si ...
- SalGAN: Visual saliency prediction with generative adversarial networks
SalGAN: Visual saliency prediction with generative adversarial networks 2017-03-17 摘要:本文引入了对抗网络的对抗训练 ...
- [JavaScript] - js
原题 var countSheep = function (num){ //your code here var str = ' sheep...'; var result = ''; for (va ...
- ASP.NET技术总结
ASP.NET是ASP相关技术的最新版本,它如何工作: (经典)ASP的后缀名是".asp",通常用VB编写:ASP.NET是".aspx"—— ASP.NET ...