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---->配置,指令,插件,使用的更多相关文章

  1. maven配置checkstyle插件对代码规范进行静态检查

    checkstyle配置的官方网站:http://checkstyle.sourceforge.net/config.html (1)新建maven项目,配置checkstyle插件 pom.xml ...

  2. Maven 配置tomcat插件

    使用tomcat插件来访问maven 1 先下载tomcat插件(在pom中配置) <!-- 配置Tomcat插件 --> <plugin> <groupId>or ...

  3. maven 配置jetty 插件

    <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin ...

  4. Maven -Maven配置tomcat插件 两种

    Maven Tomcat插件现在主要有两个版本,tomcat-maven-plugin和tomcat7-maven-plugin,使用方式基本相同. tomcat-maven-plugin 插件官网: ...

  5. maven 配置jetty插件

    <build>        <finalName>shiroweb</finalName>        <plugins>            & ...

  6. Maven配置插件跳过测试代码的编译和运行

    Maven配置插件跳过测试代码的编译和运行: <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins< ...

  7. maven中jetty插件配置

    maven中jetty插件的配置,可用于项目在内置jetty服务器中的部署. <plugin> <groupId>org.mortbay.jetty</groupId&g ...

  8. maven项目配置findbugs插件 使用git钩子控制代码的提交

    maven项目配置findbugs插件对代码进行静态检测 当发现代码有bug时,就不让用户commit代码到远程仓库里 没有bug时才可以commit到远程仓库中 (1)新建maven项目 ,配置fi ...

  9. maven常见指令和插件

    总结自:https://www.cnblogs.com/ysocean/p/7416307.html#_label1及 https://blog.csdn.net/zhaojianting/artic ...

  10. Maven项目配置tomcat插件实现项目自动部署到远程服务器

    1.tomcat配置 在tomcat目录中的conf目录下找到tomcat-users.xml配置文件,然后搜索tomcat-users,进行tomcat用户的角色和权限配置,如下: <tomc ...

随机推荐

  1. 20145319 《网络渗透》免考—API拦截技术

    20145319 <网络渗透>免考-API拦截技术 概述 本次实验在window环境下进行,主要通过编写hook代码和注入程序,将我们的hook代码通过dll文件的形式注入到目标中,拦截其 ...

  2. 如何利用好github的问题

    github对我来说真的是一个超好的平台,不过之前只是把它仓库来使用, 后来在大佬告诉我应该怎么使用github,今天就来总结下如何利用好github,让它发挥最大的威力. 1.把github当做百科 ...

  3. Codeforces 765F Souvenirs - 莫队算法 - 链表 - 线段树

    题目传送门 神速的列车 光速的列车 声速的列车 题目大意 给定一个长度为$n$的序列,$m$次询问区间$[l, r]$内相差最小的两个数的差的绝对值. Solution 1 Mo's Algorith ...

  4. darknet中的若干问题

    2018-04-20: https://github.com/pjreddie/darknet/issues/717 改了一下午,然后/usr/include/c++/4.8/bits/stl_rel ...

  5. 1-1.flutter学习笔记(一)git入门(msysgit图文安装)

    1.下载git-for-windows (1)常用的GitHub客户端msysgit,也就是git-for-windows. (2)登录官网 https://git-for-windows.githu ...

  6. Spring Boot源码分析

    1.核心: SpringApplication.run(SpringbootdemoApplication.class, args); 内部 2.初始化: new SpringApplication( ...

  7. 一个查表置换的CM

    说实话,今天被自己蠢哭了 因为看多了一个字符,以为是输入字符变形后的base64编码,也怪自己没大致看过base64汇编形式,把base64跟完了用py实现完算法才意思到是base64,这是题外话 本 ...

  8. jquery里面获取div区块的宽度与高度

    https://blog.csdn.net/ll641058431/article/details/52768825 获取宽度 $('div').width();     获取:区块的本身宽度 $(' ...

  9. Optical Flow related Tutorials

    Optical Flow related Tutorials 2017-04-01 10:50:55 Reference: 1. http://blog.csdn.net/carson2005/art ...

  10. C#数字前面如何补0

    PadLeft()函数:向左补齐PadRight()函数:向右补齐 class Program { static void Main(string[] args) { ; Console.WriteL ...