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 ...
随机推荐
- TensorFlow学习---tf.nn.dropout防止过拟合
一. Dropout原理简述: tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层. Dropout就是在不同的训练过程中随机扔掉一部分神经元.也 ...
- Spring <import>标签配置
使用情景:在Maven项目中,我们在Spring 配置文件中需要用到<import resource="">标签来引入其他配置文件,这里我要记下一些注意事项 情景1 & ...
- Restful framework【第十二篇】版本控制
简单使用 -drf版本控制 -在setting中配置 'DEFAULT_VERSION': 'v1', # 默认版本(从request对象里取不到,显示的默认值) 'ALLOWED_VERSIONS' ...
- Android O HIDL的实现对接【转】
本文转载自:https://blog.csdn.net/gh201030460222/article/details/80551897 Android O HIDL的实现对接1. HIDL的定义1.1 ...
- UML类图中箭头的含义
Explanation of the UML arrows Here's some explanations from the Visual Studio 2015 docs: UML Class D ...
- C# 递归模型定义。赋值
https://blog.csdn.net/wumiju/article/details/80429412 public partial class ProductTypeModel:DbEntity ...
- NodeJS 获取网页源代码
获取网页源代码 node 获取网页源代码 var http = require('http'); var url = "http://www.baidu.com/"; // 参数u ...
- 【译】第23节---Fluent API - 实体映射
原文:http://www.entityframeworktutorial.net/code-first/configure-entity-mappings-using-fluent-api.aspx ...
- HDU 4313 Matrix(并查集)
http://acm.hdu.edu.cn/showproblem.php?pid=4313 题意: 给出一棵树,每条边都有权值,其中有几个点是特殊点,现在破坏边还使得这几个特殊点互相不可达,需要使得 ...
- HDU 6212 Zuma(区间dp)
http://acm.hdu.edu.cn/showproblem.php?pid=6212 题意:有一行的祖玛,只由1和0组成,每次出现连续三个及以上的就会消去,问你最少需要发射多少个球才能消完. ...