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. 20145311 王亦徐 《网络对抗技术》 Web基础

    20145311 王亦徐 <网络对抗技术> Web基础 实验内容 简单的web前端页面(HTML.CSS等) 简单的web后台数据处理(PHP) Mysql数据库 一个简单的web登陆页面 ...

  2. topcoder srm 460 div1

    problem1 link 设$f[i][j]$表示已经分配了answers中的前$i$个,分配给的问题的状态为 $j$的方案数. 其中状态可以用$n$位的三进制表示,0表示还未分配,1表示已分配是 ...

  3. 如果让我重来,我会选择C和(或者)Python。

    如果让我重来,我会选择C和(或者)Python.Python语法和库更丰富,上手更容易,使用更方便.C简单直接,学习成本不高,贴近底层,能帮助了解底层细节.先强调:1. 语言只是工具,假以时日,你都会 ...

  4. Cmder + Babun 打造 Windows 好用的终端工具

    Babun a windows shell you will love Babun features the following: Pre-configured Cygwin with a lot o ...

  5. 什么是TF-A?

    1. TF-A的全称是什么? Arm Trusted Firmware 2. TF-A的作用是什么? 在secure world和non-secure world之间切换 3. TF-A涉及到哪几个部 ...

  6. Windows进程的内核对象句柄表

    当一个进程被初始化时,系统要为它分配一个句柄表.该句柄表只用于内核对象 ,不用于用户对象或GDI对象. 创建内核对象 当进程初次被初始化时,它的句柄表是空的.然后,当进程中的线程调用创建内核对象的函数 ...

  7. P2536 [AHOI2005]病毒检测

    反思 对于*符号,明明可以让相同位置再次匹配下一个,或者跳过当前位置匹配,但是却写了个把trie的子树全部push进队列的垃圾写法,结果一直MLE 告辞 思路 模板串多且不长,可以塞到trie树里,这 ...

  8. docker 安装redis

    https://blog.csdn.net/chenjianandiyi/article/details/78962709 运行镜像redis:  docker run --name redis1 - ...

  9. (zhuan) Building Convolutional Neural Networks with Tensorflow

    Ahmet Taspinar Home About Contact Building Convolutional Neural Networks with Tensorflow Posted on a ...

  10. tcpdump使用方法

    TcpDump可以将网络中传送的数据包完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 工作中使用tcpdump命令抓 ...