`
Josh_Persistence
  • 浏览: 1651530 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Maven常用命令及常见知识在项目中的实际运用 - 不断更新中

阅读更多

项目中有用的Maven命令

 

一、maven是什么?

Maven这个词可以翻译为“知识的积累”,也可以翻译为“专 家”或“内行”。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平 台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。

 

1.  将没有在maven官方repository中的jar包加入到本地的maven repository中:

mvn install:install-file  -Dfile=path-to-your-artifact-jar -DgroupId=your.groupId -DartifactId=your-artifactId  -Dversion=your-version -Dpackaging=jar

 

2.  使Maven2在下载依赖包的同时下载其源代码包和文档的方法

   (Maven import the source code and documentation)

1). 使用maven命令:mvn dependency:sources 下载依赖包的源代码。

 

2). 使用参数 -DdownloadSources=true 下载源代码jar。 -DdownloadJavadocs=true 下载javadoc包。

      mvn eclipse:eclipse -Declipse.useProjectReferences=true -DdownloadSources=true -DdownloadJavadocs=true 

      mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=true

      mvn -DdownloadSources=true -DdownloadJavadocs=true -DoutputDirectory=target/eclipse-classes eclipse:eclipse

     mvn -DdownloadSources=true eclipse:eclipse

 

更为直观的理解:使用mvn eclise:clean eclipse:eclipse之前,eclipse中项目的布局是:


 在使用该命令之后,项目布局是:


 

3. 使用Maven命令执行java Class的main方法:

 

mvn exec:java -Dexec.mainClass="com.wsheng.test.RunSampleMainClass" -Dexec.classpathScope=test

 

4. 在控制台中执行Maven命令时,怎样用log记录查看所有的执行过程中的信息: 

1) 如查看maven在install时的具体执行信息:

       常规: mvn clean install -DskipTests

       查看详细信息: mvn clean install -DskipTests -X -e

2) 将Maven在install时执行的具体信息输出到C盘目录下的log.txt中

 a) 首先使用plugin enable dependency tree

.            <plugin>

              <groupId>org.apache.maven.plugins</groupId>

              <artifactId>maven-dependency-plugin</artifactId>

              <version>2.5.1</version>

              <executions>

                  <execution>

                     <id>build-classpath</id>

                     <phase>generate-sources</phase>

                     <goals>

                         <goal>build-classpath</goal>

                     </goals>

                     <configuration>

                         <!-- configure the plugin here -->

                     </configuration>

                  </execution>

              </executions>

           </plugin>

  b). mvn clean install -X > c:/log.txt

 

5. maven中多个命令可以合并使用:maven –U clean eclipse:clean eclipse:eclipse

mvn clean:  清除目标目录中的生成结果。

mvn eclipse:eclispse: 生成 Eclipse 项目文件及包引用定义,注意,需确保定义Classpath Variables: M2_REPO,指向本地maven类库目录。

 

6.mvn clean install site -DskipTests -Dmaven.test.skip

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译(complile),测试(test),打包(package),安装(install), 部署(deploy)等等。mvn clean install会把生成的jar打包到MAVEN的本地仓库中
  • Site Lifecycle 生成项目报告,站点,发布站点。
  • -Dmaven.test.skip 在编译,打包,部署时忽略测试包中的Class和Resources.

如果想跳过测试阶段,可用:

mvn package -DskipTests

想临时性跳过测试代码的编译,可用:

mvn package -Dmaven.test.skip=true

maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin两个插件的行为,既跳过编译,又跳过测试。

 

 

 7. mvn -v 查看所在机器上maven的安装版本 

 

 8.  设置maven中下载jar包的时候使用代理服务器下载,也可同时设置哪些主机不使用代理。

    编辑settings.xml文件 

 <proxies> 

   <proxy> 

        <id>abc</id> 

         <active>true</active> 

        <protocol>http</protocol> 

        <host> </host> 

        <port></port> 

        <username>...</username> 

        <password>....</password> 

        <nonProxyHosts>.....</nonProxyHosts> 

     </proxy> 

</proxies> 

nonproxyhosts指定哪些主机名不使用代理 

 

9.查看Maven中的依赖情况:

mvn dependency:list   可以看到当前项目已解析的依赖 
mvn dependency:tree  看到依赖树 
mvn dependency:analyse 查看依赖的工具 

 

10. 剪裁反应堆(执行模块)

有时多个模块的话,有可能只是选取其中的某些部分执行: 
 比如mvn-aggragtor下有mvn-email,mvn-parent,mvn-persist,mvn-email等模块依赖mvn- parent模块,则 
mvn clean install -pl account-email -am 
-pl:构建指定的模块,模块间用逗号分割 -am:同时构健模块的所依赖的模块 

 

11. Maven跳过测试和测试代码的编译:

跳过测试scope(test):mvn package-DskipTests 
跳过测试代码的编译:  mvn package-Dmaven.test.skip=true 

注: 默认情况下,maven-surefile-plugin的test目标会自动执行测试 

src/test/java下的一组命名模式的测试类,该组模式为 
   **/Test*.java: 
   **/*Test.java: 
   **/*TestCase.java: 
12. Maven中执行指定的测试:
mvn test-Dtest=类名 
mvn test-Dtest=Random*Test  (匹配 )
注:
在pom中,可以自动运行以Tests结尾的测试类 
       <plugin> 
   <configuration> 
     <includes> 
     <include>**/*Tests.java</include> 
    </includes> 
同样可以用<excludes><exclude>去排除运行测试的类 
13. 测试覆盖率报告 
mvn跟开源测试覆盖率统计工具 合成,比如 
mvn cobertura:cobertura 之后在target/site/cobertura下看到index.html文件 
14. 指定Maven只执行某个特定的类中的所有方法:如执行类TestCircle.
mvn -Dtest=TestCircle test
当然可以使用匹配模式来指定执行几个class
mvn -Dtest=TestCi*le test
更强的地方在于你可以混合使用多个名称和模式,用逗号隔开即可
mvn -Dtest=TestSquare,TestCi*le test
15.执行某个类中的几个方法或者某个方法
注意:1. 在2.7.3版本中,在一个Test Class中,你只可以执行多个方法。
           2. 只支持Junit4.x和TestNG
mvn -Dtest=TestCircle#mytest test
当然,也可以使用模式
mvn -Dtest=TestCircle#test* test
在surefire 2.1,可以选择执行多个方法,这种方式只能用junit4.x
mvn -Dtest=TestCircle#testOne+testTwo test
 16. 如果希望某个Unit Test失败时不会影响其他Unit Test的执行,则使用
     -Dmaven.test.failure.ignore=true
其它Maven有用的小知识:
1. maven的编译依赖范围: 
        compile:默认使用该依赖,对编译,测试,运行三种classpath 都有效 
        test: 只对测试时有效,如junit 
        provided:在运行时无效,对编译和测试有效,如servlet-api 
        runtime:如JDBC,对测试和运行有效,在编译时无效 
2. 归类依赖 

   比如spring下的很多模块,都是同一个项目的,版本都相同,则为了优化,可以这样, 
先定义一个<properties>项,即 
   <properties> 
   <abc>1.0</abc> 
  </properties> 
 然后其他的dependcy中,可以这样  <version>${abc}</version> 

 

3. MVN的仓库 

    MVN仓库的路径形式为groupId/artifactId/version/articatId-version.packagin 
  仓库分为本地仓库和远程仓库 
  本地仓库的路径修改,可以修改settings.xml 
   <settings> 
    <localRepository>d:\java\......</localRepository> 
</settings>

 

4. MVN的生命周期:clean(清理项目),default是构建项目,site是建立项目站点 

 

5. MVN的插件和目标的对应关系

dependcy:analyze 冒号前面是插件前缀,冒号后面是插件的目标 

 

6. Maven中的 聚合 

   当想一次过构建多个模块时,可以使用聚合,关系是包含和被包含的关系: 
   <modules> 
      <module>..  </module> 
       <module>.....</module> 
   </modules> 

 

7. Maven中依赖关系的Scope

在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

* compile,缺省值,适用于所有阶段,会随着项目一起发布。

* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。

* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

 * system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

 

8、安装本地jar包到本地仓库中:

是自己编写的一个jar文件,每次添加单个jar到maven本地仓库的操作如下: 1.建立一个新的文件夹,将jar文件存放在该文件夹下。   注意文件夹下最好只存放该文件。 2.在该文件夹下建立一个pom.xml文件,在pom文件中定义其maven坐标。 3.在cmd窗口中执行以下命令:  mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> 

例如:

mvn install:install-file  -Dfile=D:/jar/xxx.jar  -DgroupId=xxx.xxx  -DartifactId=xxx -Dversion=x.x -Dpackaging=jar

 

如:

mvn install:install-file -Dfile=plexus-utils-1.1.jar -DgroupId=org.codehaus.plexus -DartifactId=plexus-utils -Dversion=1.1 -Dpackaging=jar

 

 

  • 大小: 4.2 KB
  • 大小: 3 KB
分享到:
评论

相关推荐

    java 简单爬虫入门maven项目

    在本项目中,你需要了解如何创建一个新的Maven项目,编写`pom.xml`文件来定义项目依赖,以及如何使用Maven命令进行编译和打包。 3. **HTTP协议**:爬虫主要通过发送HTTP请求获取网页内容,因此理解HTTP的基本原理,...

    Maven实战最清楚版

    - **2.6 安装NetBeans Maven插件**:NetBeans Maven插件允许在NetBeans IDE中使用Maven进行项目管理和构建。 - **2.7 Maven安装最佳实践** - **2.7.1 设置MAVEN_OPTS环境变量**:通过设置此环境变量可以优化Maven...

    maven教程.pdf

    ### Maven 教程知识点概述 #### 一、Maven 概念及作用 - **定义**: Maven 是一款基于 Java 平台的项目构建与依赖管理工具。...通过上述知识点的学习,可以更好地理解和运用 Maven,在实际项目中提高开发效率和质量。

    Maven实战(基于Maven3).pdf

    ### Maven常用命令 Maven命令通常采用生命周期(Lifecycle)的方式执行。Maven提供了三个主要的生命周期:clean、default 和 site。 - **`mvn clean`**:清理项目,删除目标目录下的所有文件。 - **`mvn compile`*...

    Apache Maven 环境配置.pdf

    #### 四、Maven常用命令 - `mvn clean`:清理项目,删除项目中的所有临时文件。 - `mvn compile`:编译项目的Java源代码。 - `mvn test`:运行项目中的单元测试。 - `mvn package`:打包项目,生成可部署的归档文件...

    demo-Maven-Webapp.rar_DEMO

    8. **构建流程**:使用Maven进行构建时,常见的命令包括`mvn clean`(清理目标目录)、`mvn compile`(编译源代码)、`mvn test`(运行测试)、`mvn package`(打包应用)等。 9. **运行与调试**:对于Web应用,...

    Maven实战入门篇

    - **生命周期模型**:Maven提供了一个完整的构建生命周期模型,该模型总结了大量项目的实际需求,遵循此模型可以避免许多常见错误。 - **插件扩展性**:Maven支持广泛的插件生态系统,满足不同场景下的特定需求。...

    SpringBoot入门Demo(非maven)

    **SpringBoot入门详解** SpringBoot是由Pivotal团队提供的全新框架,其设计目标是为了简化Spring应用的初始...在实际开发中,Maven或Gradle是更常见的构建工具,但了解非Maven方式有助于理解SpringBoot的底层机制。

    一份关于maven的教程!!!!!!!!

    在系统环境变量中设置 `MAVEN_HOME` 指向 Maven 的安装目录,并将 `${MAVEN_HOME}/bin` 添加到 `PATH` 环境变量中。 **2.4 验证 Maven 安装** 打开命令行工具,运行 `mvn -version` 命令查看 Maven 版本信息。 ##...

    大数据实验二-HDFS编程实践

    2. **Shell命令的掌握**:熟练掌握了HDFS常用Shell命令后,可以在日常运维或数据处理过程中快速高效地执行任务。 3. **Java API的应用**:Java API提供了更高级的功能支持,如并发处理、错误恢复等,对于开发高性能...

    java岗位求职简历-黑金风格(带项目经历内容).docx

    【Java岗位求职简历详解】 这份简历是一位专注于Java开发的专业人士,具有丰富的项目经验和全面的技术技能。以下是简历中涉及的关键...他的简历充分展示了在不同项目中如何运用各种技术和工具来解决实际问题的能力。

    java常见问题 .

    根据提供的文件信息,我们可以梳理出一系列与Java相关的知识...以上仅为Java部分知识点的概览,实际上Java是一门非常庞大且不断发展的语言,掌握这些基础后还需不断学习新的技术和框架以适应不断变化的需求和技术趋势。

    java开发常用jar包

    Java开发中的JAR(Java Archive)文件是Java平台特有的归档格式,用于打包类库、资源文件和其他相关组件。在Java应用程序或Web应用中,...在实际开发中,理解和熟练运用这些知识,可以有效地提高开发效率和代码质量。

    关于java项目实战练习

    在Java项目实战练习中,我们通常会涉及到许多关键知识点,这些知识涵盖了软件开发的各个方面,包括但不限于编程基础、设计模式、框架应用、数据库交互、异常处理、多线程以及单元测试等。以下是对这些核心概念的详细...

    Linux钩子配置(SVN)

    例如,在Maven项目中可以使用`svnkit-maven-plugin`来管理和同步SVN仓库。 - 对于IDEA等开发工具,也可以配置SVN插件来简化版本控制操作。 **2. 使用JRebel进行热部署** - **JRebel**是一款强大的Java类加载器插件...

    2017年尚学堂Java培训课程大纲.docx

    - **Java数据结构**(栈、队列、链表的实现):学习并实践常见的数据结构,包括栈、队列和链表的实现及其在实际问题中的应用。 - **IO流技术及应用**:讲解文件读写、网络数据传输等场景下的IO流技术,包括字节流、...

    2024春招面试真题-鑫合易家java初级试卷1-题目.docx

    - **应用场景**:在实际编程中,使用`final`关键字有助于提高代码的安全性和可维护性,尤其是在多线程环境中,它可以防止意外的数据修改。 #### 2. 构造方法的理解 - **知识点解释**:构造方法是一种特殊的方法,...

    北大青鸟-话费自动缴存系统

    【北大青鸟-话费自动缴存系统】是北大青鸟S2阶段的Java毕业设计项目,旨在训练学员们在实际开发环境中的编程能力和问题解决技巧。该项目主要目标是构建一个自动化系统,能够便捷地处理话费的充值与管理,包括但不...

    iteye的技术博客集合

    - **Eclipse 如何从 SVN 导入 Maven 项目**:这部分内容介绍了如何在 Eclipse 中导入 Maven 项目,并解决导入过程中可能遇到的问题。 - **Maven 构建 web 项目时 war 名称由什么决定**:这部分讲解了 Maven 构建 web...

Global site tag (gtag.js) - Google Analytics