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 ...
随机推荐
- 20145319 《网络渗透》免考—API拦截技术
20145319 <网络渗透>免考-API拦截技术 概述 本次实验在window环境下进行,主要通过编写hook代码和注入程序,将我们的hook代码通过dll文件的形式注入到目标中,拦截其 ...
- 如何利用好github的问题
github对我来说真的是一个超好的平台,不过之前只是把它仓库来使用, 后来在大佬告诉我应该怎么使用github,今天就来总结下如何利用好github,让它发挥最大的威力. 1.把github当做百科 ...
- Codeforces 765F Souvenirs - 莫队算法 - 链表 - 线段树
题目传送门 神速的列车 光速的列车 声速的列车 题目大意 给定一个长度为$n$的序列,$m$次询问区间$[l, r]$内相差最小的两个数的差的绝对值. Solution 1 Mo's Algorith ...
- darknet中的若干问题
2018-04-20: https://github.com/pjreddie/darknet/issues/717 改了一下午,然后/usr/include/c++/4.8/bits/stl_rel ...
- 1-1.flutter学习笔记(一)git入门(msysgit图文安装)
1.下载git-for-windows (1)常用的GitHub客户端msysgit,也就是git-for-windows. (2)登录官网 https://git-for-windows.githu ...
- Spring Boot源码分析
1.核心: SpringApplication.run(SpringbootdemoApplication.class, args); 内部 2.初始化: new SpringApplication( ...
- 一个查表置换的CM
说实话,今天被自己蠢哭了 因为看多了一个字符,以为是输入字符变形后的base64编码,也怪自己没大致看过base64汇编形式,把base64跟完了用py实现完算法才意思到是base64,这是题外话 本 ...
- jquery里面获取div区块的宽度与高度
https://blog.csdn.net/ll641058431/article/details/52768825 获取宽度 $('div').width(); 获取:区块的本身宽度 $(' ...
- Optical Flow related Tutorials
Optical Flow related Tutorials 2017-04-01 10:50:55 Reference: 1. http://blog.csdn.net/carson2005/art ...
- C#数字前面如何补0
PadLeft()函数:向左补齐PadRight()函数:向右补齐 class Program { static void Main(string[] args) { ; Console.WriteL ...