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 ...
随机推荐
- 20145311 王亦徐 《网络对抗技术》 Web基础
20145311 王亦徐 <网络对抗技术> Web基础 实验内容 简单的web前端页面(HTML.CSS等) 简单的web后台数据处理(PHP) Mysql数据库 一个简单的web登陆页面 ...
- topcoder srm 460 div1
problem1 link 设$f[i][j]$表示已经分配了answers中的前$i$个,分配给的问题的状态为 $j$的方案数. 其中状态可以用$n$位的三进制表示,0表示还未分配,1表示已分配是 ...
- 如果让我重来,我会选择C和(或者)Python。
如果让我重来,我会选择C和(或者)Python.Python语法和库更丰富,上手更容易,使用更方便.C简单直接,学习成本不高,贴近底层,能帮助了解底层细节.先强调:1. 语言只是工具,假以时日,你都会 ...
- Cmder + Babun 打造 Windows 好用的终端工具
Babun a windows shell you will love Babun features the following: Pre-configured Cygwin with a lot o ...
- 什么是TF-A?
1. TF-A的全称是什么? Arm Trusted Firmware 2. TF-A的作用是什么? 在secure world和non-secure world之间切换 3. TF-A涉及到哪几个部 ...
- Windows进程的内核对象句柄表
当一个进程被初始化时,系统要为它分配一个句柄表.该句柄表只用于内核对象 ,不用于用户对象或GDI对象. 创建内核对象 当进程初次被初始化时,它的句柄表是空的.然后,当进程中的线程调用创建内核对象的函数 ...
- P2536 [AHOI2005]病毒检测
反思 对于*符号,明明可以让相同位置再次匹配下一个,或者跳过当前位置匹配,但是却写了个把trie的子树全部push进队列的垃圾写法,结果一直MLE 告辞 思路 模板串多且不长,可以塞到trie树里,这 ...
- docker 安装redis
https://blog.csdn.net/chenjianandiyi/article/details/78962709 运行镜像redis: docker run --name redis1 - ...
- (zhuan) Building Convolutional Neural Networks with Tensorflow
Ahmet Taspinar Home About Contact Building Convolutional Neural Networks with Tensorflow Posted on a ...
- tcpdump使用方法
TcpDump可以将网络中传送的数据包完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 工作中使用tcpdump命令抓 ...