精华内容
下载资源
问答
  • Maven基础知识,如何搭建Maven环境,Maven常用命令,如何搭建一个Maven项目

    Maven简介

    Maven是什么

    Maven翻译为“专家、行家”。Maven是Apache下一个Java语言开发 开源项目。

    是Apache的顶级项目

    下载地址: http://maven.apache.org/

    是一个项目管理工具,使用Maven对Java项目进行构建(打包)依赖管理(jar

    目前使用Maven管理的项目持续增长。

    使用Maven有什么好处

    依赖管理

    就是对Jar包的统一管理,可以节省空间。

    什么是依赖?

    一个Java项目可能要使用到一些第三方的Jar包才可以运行,那么我们说这个Java项目依赖于这些第三方的Jar包。

    举一个例子:一个CRM(客户关系管理系统)项目,它的系统架构师SSM,该CRM项目依赖于SSM框架,具有依赖Spring,SpringMvc,Mybatis.

             什么是依赖管理:就是对项目中 所有依赖的Jar包 进行规范化管理

    一键构建

    编码编译测试(Junit)、运行打包部署

    普通java项目:jar包

    Java web项目:war包

    Method ->class ->.java->jar ->war

    War可以直接丢在Tomcat的webapp目录

    可以跨平台

    在window,linux都可以运行

    Java语言本身就是跨平台的。

    应用在大型项目可以提交开发效率

    分析:

             商品模块、用户模块、订单模块、地址模块、支付模块。

    Maven的分模块开发(父子工程)

             互联网项目:业务来划分模块

             传统项目:按照层来划分,entity,dao,service,web

    Maven的安装部署

    可以分为三个步骤

    第一步:下载Maven的安装包

    第二步:解压Maven的安装包,注意,存放Maven安装包的路径不要有中文存在

    第三步:配置环境变量,当环境变量配置好以后,可以在cmd命令提示符窗口下输入 mvn -v 检查安装好的maven的版本

                  如果提示错误信息,没有正确显示,则说明配置错误。

    可以参考百度经验提供的详细步骤:https://jingyan.baidu.com/article/2f9b480ddc1c5d41cb6cc217.html

    maven仓库

    是什么

    仓库:存储东西的地方。

    maven仓库:存储Jar包的地方,存储jar包的目录。

    maven有3种仓库

    本地仓库

    每台使用Maven的机器就是一个本地仓库,你自己电脑上放Jar包的位置。

    需要自己维护

    修改本地仓库地址

    Conf/settings.xml

    远程仓库(私服)

    公司维护

    一个公司有一个远程仓库,公司开发团队共用,局域网中。

    中央仓库

    Maven团队维护的,

    所有人共享

    比如:想开源一个jar包,给别人用,告诉别人配置文件怎么写即可。

    Maven目录结构

    如何建立一个Maven项目

    首先打开IDEA,新建项目

    然后选择Maven项目,此处先不选择模板架构

    然后点击下一步,输入新建项目信息,点击下一步

    会出现如下图所示信息,点击完成

    这样一个简单的Java的Maven项目就配置好了

    配置Maven

    maven项目建立好以后,还要对项目进行maven设置,步骤如下

    第一步

    第二步:

    第三步:

    这样Maven就配置好了。

    POM文件简单介绍

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
    
    
    
        <!--项目名称:组织名+项目名,和包名类似-->
        <groupId>com.hyx</groupId>
        <!--模块名称-->
        <artifactId>Maven-learning</artifactId>
        <!--版本-->
        <version>1.0-SNAPSHOT</version>
        <!--打包方式:
           jar:执行package会打成jar包,一般是Java项目
           war:执行Package会打成war包,一般是JavaWeb项目
           pom:用于父子工程,将父工程设置为pom
           -->
        <packaging>jar</packaging>
    
    
    </project>

    如何建立一个JaveWeb项目

    方法一:将建立好的Java项目改成JavaWeb项目

    第一步:添加文件夹与文件,web.xml可以从已有的JavaWeb项目中复制

    第二步:修改pom配置文件导包

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
    
    
    
        <!--项目名称:组织名+项目名,和包名类似-->
        <groupId>com.hyx</groupId>
        <!--模块名称-->
        <artifactId>Maven-learning</artifactId>
        <!--版本-->
        <version>1.0-SNAPSHOT</version>
        <!--打包方式:
           jar:执行package会打成jar包,一般是Java项目
           war:执行Package会打成war包,一般是JavaWeb项目
           pom:用于父子工程,将父工程设置为pom
           -->
       <packaging>war</packaging>
    
        <properties>
            <servlet-api.version>2.5</servlet-api.version>
        </properties>
        
        //为项目添加依赖
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
    
        </dependencies>
    
    
    </project>

    告诉Maven我是一个Web项目

    第一步:

    第二步:

    第三步:

    第四步:设置成打包为jar包

     第五步:配置Tomcat

    给配置的Tomcat起一个名字,并选择版本

    之后配置Deployment

    这些工作完成后,可以在IDEA中使用控制台执行打包命令,就可以看到一个JavaWeb 的war包打包成功

    点击运行也可以在网页中看到Hello World 的字样

    Maven常用命令

    Maven常用命令

    Clean:清除编译之后的文件

    删除target目录

     

    Compile:编译主目录的文件

    编译之后,在target目录下会有编译之后的文件.class

    Package打包

    普通项目:.jar

    Javaweb项目:war

    Test:编译并运行test目录的代码

    编译、运行Test目录的代码

    Install把项目部署到本地仓库

    将你负责的这一块功能,打车Jar包给团队其他人使用。

    tomcat:run 一键启动

    javaweb项目才使用。

    如何导入一个Maven项目

    第一步:

    第二步:

    第三步:

    .

    第四步:

    第五步:

    第六步:

    第七步:

    这样就导入了一个Maven项目

    展开全文
  • maven的常用命令与多模块项目构建

    千次阅读 2018-11-15 16:16:26
    本节介绍几个maven常用的命令,以备遗忘时可以查看。 mvn -version 查看maven的版本及配置信息 mvn archetype:create -DgroupId= DartifactId= 构建java项目 mvn archetype:create -DgroupId= DartifactId= -Da....

          本节介绍几个maven常用的命令,以备遗忘时可以查看。

    mvn -version                 查看maven的版本及配置信息

    mvn archetype:create   -DgroupId=    DartifactId=    构建java项目

    mvn archetype:create   -DgroupId=    DartifactId=    -DarchetypeArtifactId=maven-archetype-webapp 创建web项目

    mvn compile                编译项目代码

    mvn package               打包项目

    mvn package -Dmaven.test.skip=true   打包项目时跳过单元测试

    mvn test                      运行单元测试

    mvn clean                    清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean package, mvn clean test

    mvn install                   打包后将其安装在本地仓库

    mvn deploy                  打包后将其安装到pom文件中配置的远程仓库

    mvn eclipse:eclipse      将maven生成eclipse项目结构

    mvn eclipse:clean         清除maven项目中eclipse的项目结构

    mvn site                       生成站点目录

    mvn dependency:list      显示所有已经解析的所有依赖

    mvn dependency:tree     以树的结构展示项目中的依赖

    mvn dependency:analyze  对项目中的依赖进行分析,依赖未使用,使用单未引入

    mvn dependency:analyze -DfailOnWarning=true  对项目中的依赖进行分析,未使用的依赖项或未声明的已使用依赖项时,输出中都会显示警告

    跳过测试的运行:你可以用mvn package -DskipTests=true。或者,您可以将该属性缩短为-DskipTests.

    跳过测试的编译和运行(不建议):你可以用mvn package -Dmaven.test.skip=true。你可以把财产缩短到-Dmaven.test.skip.

    调试单元测试:你可以用mvn package -Dmaven.surefire.debug.

    调试集成测试:你可以用mvn package -Dmaven.failsafe.debug.

    mvn tomcat:run              启动tomcat

    mvn clean install        构建项目

    mvn clean dependency:copy-dependencies package    清理和打包

    处理并显示清理生命周期的所有阶段: mvn post-clean

    介绍

    POM代表项目对象模型。它是 Maven 中工作的基本单位,这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。
    POM 包含的项目是使用 Maven 来构建的,它用来包含各种配置信息。
    POM 也包含了目标和插件。在执行任务或目标时,Maven 会使用当前目录中的 POM。它读取POM得到所需要的配置信息,然后执行目标。部分的配置可以在 POM 使用如下:

    • project dependencies
    • plugins
    • goals
    • build profiles
    • project version
    • developers
    • mailing list

    创建一个POM之前,应该要先决定项目组(groupId),它的名字(artifactId)和版本,因为这些属性在项目仓库是唯一标识的。

    POM的例子

    <project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
       http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <groupId>com.yiibai.project-group</groupId>
       <artifactId>project</artifactId>
       <version>1.0</version>
    <project>
    

    XML

    要注意的是,每个项目只有一个POM文件。

    • 所有的 POM 文件要项目元素必须有三个必填字段: groupIdartifactIdversion
    • 在库中的项目符号是:groupId:artifactId:version
    • pom.xml 的根元素是 project,它有三个主要的子节点。
    节点描述
    groupId这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团com.company.bank拥有所有银行相关项目。
    artifactId这是项目的ID。这通常是项目的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在存储库中的位置。
    version这是项目的版本。与groupId一起使用,artifact在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0com.company.bank:consumer-banking:1.1

    超级POM

    所有的POM继承自父类(尽管明确界定)。这个基础的 POM 被称为超级 POM,并包含继承默认值。 Maven使用有效的POM(超级POM加项目配置的配置)执行有关目标。它可以帮助开发人员指定最低配置的详细信息写在 pom.xml 中。虽然配置可以很容易被覆盖。 一个简单的方法来看看超级POM的默认配置,通过运行下面的命令:mvn help:effective-pom 创建一个 pom.xml 。 在下面的例子中,已经创建了一个 pom.xmlC:\MVN\ 项目文件夹中。 现在,打开命令控制台,进入包含 pom.xml 文件夹并执行以下 mvn 命令。

    C:\MVN\project> mvn help:effective-pom
    

    Maven将开始处理,并显示有效的 effective-pom 。

    [INFO] Scanning for projects...
    [INFO] Searching repository for plugin with prefix: 'help'.
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0
    [INFO]    task-segment: [help:effective-pom] (aggregator-style)
    [INFO] ------------------------------------------------------------------------
    [INFO] [help:effective-pom {execution: default-cli}]
    [INFO]
    
    .....
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: < 1 second
    [INFO] Finished at: Thu Jul 05 11:41:51 IST 2012
    [INFO] Final Memory: 6M/15M
    [INFO] ------------------------------------------------------------------------
    

    在控制台显示结果:有效POM,继承,插值,应用配置文件。

    生命周期

    构建生命周期阶段的目标是执行顺序是一个良好定义的序列。
    这里使用一个例子,一个典型的 Maven 构建生命周期是由下列顺序的阶段:

    阶段处理描述
    准备资源资源复制资源复制可以进行定制
    编译执行编译源代码编译在此阶段完成
    包装打包创建JAR/WAR包如在 pom.xml 中定义提及的包
    安装安装这一阶段在本地/远程Maven仓库安装程序包

    默认(或生成)生命周期

    这是 Maven 主要的生命周期,用于构建应用程序。它有以下 23 个阶段。

    生命周期阶段描述
    validate验证项目是否正确,并且所有必要的信息可用于完成构建过程
    initialize建立初始化状态,例如设置属性
    generate-sources产生任何的源代码包含在编译阶段
    process-sources处理源代码,例如,过滤器值
    generate-resources包含在包中产生的资源
    process-resources复制和处理资源到目标目录,准备打包阶段
    compile编译该项目的源代码
    process-classes从编译生成的文件提交处理,例如:Java类的字节码增强/优化
    generate-test-sources生成任何测试的源代码包含在编译阶段
    process-test-sources处理测试源代码,例如,过滤器任何值
    test-compile编译测试源代码到测试目标目录
    process-test-classes处理测试代码文件编译生成的文件
    test运行测试使用合适的单元测试框架(JUnit)
    prepare-package执行必要的任何操作的实际打包之前准备一个包
    package提取编译后的代码,并在其分发格式打包,如JAR,WAR或EAR文件
    pre-integration-test完成执行集成测试之前所需操作。例如,设置所需的环境
    integration-test处理并在必要时部署软件包到集成测试可以运行的环境
    pre-integration-test完成集成测试已全部执行后所需操作。例如,清理环境
    verify运行任何检查,验证包是有效的,符合质量审核规定
    install将包安装到本地存储库,它可以用作当地其他项目的依赖
    deploy复制最终的包到远程仓库与其他开发者和项目共享

    有涉及到Maven 生命周期值得一提几个重要概念:

    • 当一个阶段是通过 Maven命令调用,例如:mvn compile,只有阶段到达并包括这个阶段才会被执行。

    • 不同的 Maven 目标绑定到 Maven生命周期的不同阶段这是这取决于包类型(JAR/WAR/EAR)。 

     

    Maven多模块项目

      Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。

      项目结构如下:

          test-hd-parent   (父级)
                 ---pom.xml
                 ---test-hd-api          (第三方接口层)
                        ----pom.xml    
               ---test-hd-foundation     (基础工具层)
                        ----pom.xml
                 ---test-hd-resource     (资源层) 
                        ----pom.xml
                 ---test-hd-service       (逻辑业务层)
                        ----pom.xml
               ---test-hd-modules     (web层)
                        ----pom.xml
                    ---test-hd-www         (web模块1)
                                ----pom.xml
                    ---test-hd-admin        (web模块2)
                                ----pom.xml     

    创建一个父maven工程

    •   新建一个maven项目,选择存储位置,并选择创建一个简单的maven工程

       

    •   输入Group Id、Artifact Id、Packaging,packaging选择pom包

    •   生成父工程,pom.xml如下

    •   删除工程中的src 目录

    创建子模块

    •   右击父工程名---》New---》Project,然后选择新建一个maven module工程

    •   设置子工程名以及父工程,再设置快速创建模式

    •   得到子工程(test-hd-api,第三方接口层),设置编译的jdk

    •   同理设置,子模块:test-hd-foundation(基础工具层)、test-hd-resource(资源层) 、test-hd-service(逻辑业务层)
    •   新建test-hd-modules (web层),选择创建一个a simple project,输入Group Id、Artifact Id、Packaging,packaging选择pom包

    创建web子模块

    •   web子模块在建在test-hd-modules (web层)里面,右击test-hd-modules 工程名---》New---》Project,然后选择新建一个maven module工程,设置子工程名以及父工程,选择新建web项目

     

    配置个模块的依赖

    •   在parent项目pom.xml中建立依赖管理(dependencyManagement)

       

       1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       3     <modelVersion>4.0.0</modelVersion>
       4     <groupId>com.hd</groupId>
       5     <artifactId>test-hd-parent</artifactId>
       6     <version>0.0.1-SNAPSHOT</version>
       7     <packaging>pom</packaging>
       8     <modules>
       9         <module>test-hd-api</module>
      10         <module>test-hd-service</module>
      11         <module>test-hd-resource</module>
      12         <module>test-hd-foundation</module>
      13         <module>test-hd-modules</module>
      14     </modules>
      15 
      16 
      17     <!-- maven依赖 -->
      18     <dependencyManagement>
      19 
      20         <dependencies>
      21             <!-- hd -->
      22             <dependency>
      23                 <groupId>com.hd</groupId>
      24                 <artifactId>test-hd-api</artifactId>
      25                 <version>0.0.1-SNAPSHOT</version>
      26             </dependency>
      27 
      28             <dependency>
      29                 <groupId>com.hd</groupId>
      30                 <artifactId>test-hd-service</artifactId>
      31                 <version>0.0.1-SNAPSHOT</version>
      32             </dependency>
      33 
      34             <dependency>
      35                 <groupId>com.hd</groupId>
      36                 <artifactId>test-hd-resource</artifactId>
      37                 <version>0.0.1-SNAPSHOT</version>
      38             </dependency>
      39 
      40             <dependency>
      41                 <groupId>com.hd</groupId>
      42                 <artifactId>test-hd-foundation</artifactId>
      43                 <version>0.0.1-SNAPSHOT</version>
      44             </dependency>
      45 
      46             <!-- Servlet -->
      47             <dependency>
      48                 <groupId>javax.servlet</groupId>
      49                 <artifactId>javax.servlet-api</artifactId>
      50                 <version>3.0.1</version>
      51                 <scope>provided</scope>
      52             </dependency>
      53             <dependency>
      54                 <groupId>javax.servlet.jsp</groupId>
      55                 <artifactId>jsp-api</artifactId>
      56                 <version>2.2</version>
      57                 <scope>provided</scope>
      58             </dependency>
      59 
      60             <!-- jstl -->
      61             <dependency>
      62                 <groupId>javax.servlet</groupId>
      63                 <artifactId>jstl</artifactId>
      64                 <version>1.2</version>
      65             </dependency>
      66 
      67             <dependency>
      68                 <groupId>taglibs</groupId>
      69                 <artifactId>standard</artifactId>
      70                 <version>1.1.2</version>
      71             </dependency>
      72 
      73             <dependency>
      74                 <groupId>junit</groupId>
      75                 <artifactId>junit</artifactId>
      76                 <version>3.8.1</version>
      77                 <scope>test</scope>
      78             </dependency>
      79 
      80         </dependencies>
      81     </dependencyManagement>
      82 
      83 </project>

       

       

    •     test-hd-foundation中的依赖

       

       1 <?xml version="1.0"?>
       2 <project
       3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
       4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       5     <modelVersion>4.0.0</modelVersion>
       6     <parent>
       7         <groupId>com.hd</groupId>
       8         <artifactId>test-hd-parent</artifactId>
       9         <version>0.0.1-SNAPSHOT</version>
      10     </parent>
      11     <artifactId>test-hd-foundation</artifactId>
      12 
      13     <dependencies>
      14 
      15         <!-- servlet -->
      16         <dependency>
      17             <groupId>javax.servlet</groupId>
      18             <artifactId>jstl</artifactId>
      19         </dependency>
      20 
      21         <dependency>
      22             <groupId>taglibs</groupId>
      23             <artifactId>standard</artifactId>
      24         </dependency>
      25 
      26         <dependency>
      27             <groupId>junit</groupId>
      28             <artifactId>junit</artifactId>
      29         </dependency>
      30     </dependencies>
      31 
      32     <build>
      33         <plugins>
      34             <!-- define the project compile level -->
      35             <plugin>
      36                 <groupId>org.apache.maven.plugins</groupId>
      37                 <artifactId>maven-compiler-plugin</artifactId>
      38                 <version>2.3.2</version>
      39                 <configuration>
      40                     <source>1.7</source>
      41                     <target>1.7</target>
      42                 </configuration>
      43             </plugin>
      44         </plugins>
      45     </build>
      46 </project>

       

      以下几个同上

    •     test-hd-api中的依赖关系
    •     test-hd-resource中的依赖关系
    •     test-hd-service中的依赖关系
    •  test-hd-module中的依赖关系
    •     test-hd-www中的依赖关系

       

    •     最后使用maven-update整个工程,右击父工程名--》Maven--》Update Project

    打包和发布

    •   打包,右击父工程名 test-hd-parent---->Run As--->Maven Install 

     

    •   打包web子工程,右击工程名test-hd-www--->Run As ---> Maven Build...---> Goals: clean package--->Run

       

          

     

    •   右击工程名test-hd-www,进行刷新,找到war包,放到tomcat的webapps中,启动tomcat,即可访问工程http://localhost:8080/test-hd-www

        

                 

    •   可以去tomcat下面webapps》test-hd-www》WEB-INF》lib中,看到引用的jar包

        

     

     

     

     

     

    展开全文
  • 常用命令从某种意义上来说,软件是帮助不懂程序的人来操作计算机的,图形化界面尤其如此。在上个世纪,比尔盖茨之所以成为世界首富,微软之所以IT界的巨鳄,就是因为Windows开图形化操作之先河,并抢先占领了全球...

    常用命令

    从某种意义上来说,软件是帮助不懂程序的人来操作计算机的,图形化界面尤其如此。在上个世纪,比尔盖茨之所以成为世界首富,微软之所以IT界的巨鳄,就是因为Windows开图形化操作之先河,并抢先占领了全球市场,笑傲江湖数十年,至今依然宝刀未老。

    诚然,现在几乎每种软件都有图形化界面,用鼠标点击几下就可以完成操作。Maven也不例外,在各类IDE中都有成熟的插件来简化操作。

    但是作为开发人员,应该时刻保持着一种职业神圣感,我们拥有上帝之手,借助程序来操纵着计算机世界的一切。我们与计算机交流的正途是通过命令,而不是图形化界面。东汉末年分三国,为什么?很大一部分因素就是因为宦官集团隔断了皇权与士大夫之间的直接联系!图形化界面是人机交互的第三者,阻止着我们与计算机的亲密接触,长此以往,必生间隙。吾辈不可不慎也哉!

    总而言之,图形化界面不是不能用,因为它确实有好处,可以提高开发效率,规避操作失误。我的观点是,用它,但是不要依赖它。

    作为开发利器的maven,为我们提供了十分丰富的命令,了解maven的命令行操作并熟练运用常见的maven命令还是十分必要的。无论多先进多炫的图形化界面,底层都得靠maven命令来驱动。知其然,知其所以然,方能百战不殆。

    在讲解插件的那一篇文章中已经说过,maven的所有任务都是通过插件来完成的,它本身只是一个空空如也的框架,不具备执行具体任务的能力。

    maven的命令格式如下:

    mvn [plugin-name]:[goal-name]

    该命令的意思是:执行“plugin-name”插件的“goal-name”目标(或者称为动作)。

    用户可以通过两种方式调用Maven插件目标。第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户在命令行只是输入生命周期阶段而已,例如Maven默认将maven-compiler-plugin的compile目标与compile生命周期阶段绑定,因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再根据绑定关系调用maven-compiler-plugin的compile目标。第二种方式是直接在命令行指定要执行的插件目标,例如mvnarchetype:generate 就表示调用maven-archetype-plugin的generate目标,这种带冒号的调用方式与生命周期无关。

    常用的maven命令如下:

    Maven命令列表

    mvn –version

    显示版本信息

    mvn clean

    清理项目生产的临时文件,一般是模块下的target目录

    mvn compile

    编译源代码,一般编译模块下的src/main/java目录

    mvn package

    项目打包工具,会在模块下的target目录生成jar或war等文件

    mvn test

    测试命令,或执行src/test/java/下junit的测试用例.

    mvn install

    将打包的jar/war文件复制到你的本地仓库中,供其他模块使用

    mvn deploy

    将打包的文件发布到远程参考,提供其他人员进行下载依赖

    mvn site

    生成项目相关信息的网站

    mvn eclipse:eclipse

    将项目转化为Eclipse项目

    mvn dependency:tree

    打印出项目的整个依赖树  

    mvn archetype:generate

    创建Maven的普通java项目

    mvn tomcat:run

    在tomcat容器中运行web应用

    mvn jetty:run

    调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用

    注意:运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的pom.xml文件所在的目录。否则,必以通过参数来指定项目的目录。


    命令参数

    上面列举的只是比较通用的命令,其实很多命令都可以携带参数以执行更精准的任务。

    Maven命令可携带的参数类型如下:


    1.   -D 传入属性参数

    比如命令:

    mvn package -Dmaven.test.skip=true

    以“-D”开头,将“maven.test.skip”的值设为“true”,就是告诉maven打包的时候跳过单元测试。同理,“mvn deploy-Dmaven.test.skip=true”代表部署项目并跳过单元测试。


    2.   -P 使用指定的Profile配置

    比如项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,在pom.xml中的配置如下:

    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <profiles>  
    2.       <profile>  
    3.              <id>dev</id>  
    4.              <properties>  
    5.                     <env>dev</env>  
    6.              </properties>  
    7.              <activation>  
    8.                     <activeByDefault>true</activeByDefault>  
    9.              </activation>  
    10.       </profile>  
    11.       <profile>  
    12.              <id>qa</id>  
    13.              <properties>  
    14.                     <env>qa</env>  
    15.              </properties>  
    16.       </profile>  
    17.       <profile>  
    18.              <id>pre</id>  
    19.              <properties>  
    20.                     <env>pre</env>  
    21.              </properties>  
    22.       </profile>  
    23.       <profile>  
    24.              <id>prod</id>  
    25.              <properties>  
    26.                     <env>prod</env>  
    27.              </properties>  
    28.       </profile>  
    29. </profiles>  
    30.    
    31. ......  
    32.    
    33. <build>  
    34.       <filters>  
    35.              <filter>config/${env}.properties</filter>  
    36.       </filters>  
    37.       <resources>  
    38.              <resource>  
    39.                     <directory>src/main/resources</directory>  
    40.                     <filtering>true</filtering>  
    41.              </resource>  
    42.       </resources>  
    43.    
    44.       ......  
    45.    
    46. </build>  

    profiles定义了各个环境的变量id,filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值,resources中是定义哪些目录下的文件会被配置文件中定义的变量替换。

    通过maven可以实现按不同环境进行打包部署,命令为: 

    mvn package -P dev

    其中“dev“为环境的变量id,代表使用Id为“dev”的profile。


    3.  -e 显示maven运行出错的信息

    4.  -o 离线执行命令,即不去远程仓库更新包

    5.   -X 显示maven允许的debug信息

    6.   -U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次


    maven命令实例

    下面结合几个实例来看看maven命令的使用方法。


    archetype:create & archetype:generate

    “archetype”是“原型”的意思,maven可以根据各种原型来快速创建一个maven项目。

    archetype:create是maven 3.0.5之前创建项目的命令,例如创建一个普通的Java项目:

    mvn archetype:create -DgroupId=packageName -DartifactId=projectName -Dversion=1.0.0-SNAPSHOT

    后面的三个参数用于指定项目的groupId、artifactId以及version。

    创建Maven的Web项目:  

        mvnarchetype:create -DgroupId=packageName -DartifactId=projectName -DarchetypeArtifactId=maven-archetype-webapp

    archetypeArtifactId参数用于指定使用哪个maven原型,这里使用的是maven-archetype-webapp,maven会按照web应用的目录结构生成项目。

    需要注意的是,在maven 3.0.5之后,archetype:create命令不在使用,取而代之的是archetype:generate命令。

    该命令会以交互的模式创建maven项目,不需要像archetype:create那样在后面跟一堆参数,很容易出错。

    但是,在命令行直接运行archetype:generat,往往会出现下面的结果:


    程序卡在了“Generatingproject in Interactive mode”这一步,加入“-X”参数显示详细信息:

    mvn -X archetype:generate

    运行结果如下:


    可见,最终是卡到这一行,maven默认会从远程服务器上获取catalog,archetypeCatalog 表示插件使用的archetype元数据,默认值为remote,local,即中央仓库archetype元数据 (http://repo1.maven.org/maven2/archetype-catalog.xml)加上插件内置元数据,由于中央仓库的archetype太多(几千个)而造成程序的阻滞。实际上我们使用不了那么多的原型,加入-DarchetypeCatalog=internal参数就可以避免这种情况,只使用内置的原型就够了:

    mvn archetype:generate -DarchetypeCatalog=internal

    然后maven会告诉你,archetype没有指定,默认使用maven-archetype-quickstart,或者你从下面的列表中选择一个可用的原型:


    列表中可用的内置原型共有10个,我们选择使用maven-archetype-quickstart原型(相当于一个“HelloWorld”模板)来创建项目,输入对应的序号“7”即可。

    然后会依次提醒你输入groupId、artifactId、version(默认1.0-SNAPSHOT)以及创建的第一个包名。


    如果构建成功就会在你的当前目录下,按照你输入的参数生成一个maven项目。


    eclipse:eclipse

    正式的开发环境中,代码一般是通过cvs、svn或者git来管理,我们从服务器下载下来源代码,然后执行mvn eclipse:eclipse生成ecllipse项目文件,然后导入到eclipse就行了。


    tomcat:run

    用了maven后,可以不需要用eclipse里的tomcat来运行web项目(实际工作中经常会发现用它会出现不同步更新的情况),只需在对应目录里运行 mvn tomat:run命令,然后就可在浏览器里运行查看了。

    首先来看一下maventomcat插件的配置:

    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <plugin>  
    2.       <groupId>org.apache.tomcat.maven</groupId>  
    3.       <artifactId>tomcat7-maven-plugin</artifactId>  
    4.       <version>2.2</version>  
    5.       <configuration>  
    6.              <port>8080</port>  
    7.              <path>/dubbo-admin</path>  
    8.              <uriEncoding>UTF-8</uriEncoding>  
    9.              <finalName>dubbo-admin</finalName>  
    10.              <server>tomcat7</server>  
    11.       </configuration>  
    12. </plugin>  

    然后配置jsp,servlet依赖等:

    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <dependency>  
    2.       <groupId>javax.servlet</groupId>  
    3.       <artifactId>servlet-api</artifactId>  
    4.       <version>2.5</version>  
    5.       <scope>provided</scope>  
    6. </dependency>  
    7. <dependency>  
    8.       <groupId>javax.servlet.jsp</groupId>  
    9.       <artifactId>jsp-api</artifactId>  
    10.       <version>2.2</version>  
    11.       <scope>provided</scope>  
    12. </dependency>  
    13. <dependency>  
    14.       <groupId>javax.servlet</groupId>  
    15.       <artifactId>jstl</artifactId>  
    16.       <version>1.2</version>  
    17. </dependency>  
    18. <dependency>  
    19.       <groupId>jsptags</groupId>  
    20.       <artifactId>pager-taglib</artifactId>  
    21.       <version>2.0</version>  
    22.       <scope>provided</scope>  
    23. </dependency>  

    然后按照下面的方式运行:


    还可以加入以下参数:跳过测试:-Dmaven.test.skip(=true);指定端口:-Dmaven.tomcat.port=9090;忽略测试失败:-Dmaven.test.failure.ignore=true当然,如果你的其它关联项目有过更新的话,一定要在项目根目录下运行mvn clean install来执行更新,再运行mvn tomcat:run使改动生效。


    help:describe

    maven有各种插件,插件又有各种目标。我们不可能记得每个插件命令。maven提供了查询各类插件参数的命令:mvn help:describe。

    例如:mvn help:describe -Dplugin=help

    代表查询help 插件的命令规范,然后maven就会告诉你该命令有几个goal,各种参数的的意义以及配置方法:

    下面的命令则代表插叙该插件的详细命令参数:


    mvn help:describe -Dplugin=help -Dfull


    maven会告诉你该命令有什么参数,怎么使用,一览无余。

    展开全文
  • Maven-编译器 允许用户运行 maven 命令的 GUI 应用程序 /**/ 要添加的更改:将默认工作区设置为上次使用。 创建 Maven 项目 生成日志文件 /**/
  • maven命令

    万次阅读 多人点赞 2018-06-27 16:39:39
    古话说:“温故而知新”,一些命令长时间不使用都会遗忘,所以想通过这篇博客记录一下自己对maven学习的成果,等到使用时再温习。下面将首先对maven进行介绍,然后介绍maven的安装配置以及与eclipse的集成,最后介绍...

         一般来说,github上大多的java项目都是使用maven,ant等进行构建的。由于之前没有使用过maven,因此这几天对maven进行了简单的学习。古话说:“温故而知新”,一些命令长时间不使用都会遗忘,所以想通过这篇博客记录一下自己对maven学习的成果,等到使用时再温习。下面将首先对maven进行介绍,然后介绍maven的安装配置以及与eclipse的集成,最后介绍maven常用命令,maven一般的项目结构,以及maven的pom文件。

    一. maven简介

          maven是一个强大的项目构建和管理工具,利用java进行开发,属于Apache下的开源项目,现在的最新版本为Apache Maven 3.3.9,官网为 http://maven.apache.org。maven是跨平台的,并且功能很强大,能够帮助使用者完成从清理,编译,测试,生成报告,打包和部署的一系列操作过程。maven标准化了项目的构建过程,有利于团队之间的协作。此外,maven可以有效的解决java项目中jar包依赖问题,解决由此带来的版本不一致等问题。maven还提供了一个免费的中央仓库,几乎可以找到任何开源类库。

    二. maven安装及配置

    (1)安装配置本地maven

          在安装maven之前必须保证计算机已经安装和配置好了jdk环境,然后从官网上下载想要安装的maven版本 http://maven.apache.org/download.cgi,这里我安装的maven 3.3.9。然后根据自己的安装路径配置环境变量,具体的新建系统变量MAVEN_HOME,并设置为安装的maven路径,如下图:


    最后,在系统变量Path加上 ;%MAVEN_HOME%\bin。之后,在命令行中输入mvn -version 判断是否安装成功,如果出现如下界面证明安装成功。


          上述步骤完成后就可以开始使用maven了,但是maven默认将仓库放在用户的临时文件夹下的 /m2/repository下,但是为了方便管理可以通过设置conf 文件 夹 下的setting.xml文件下<localRepository></localRepository>节点来自定义本地仓库内容。我再E盘重新建立本地仓库文件夹E:/m2/repository,并设置了setting.xml文件:<localRepository>E:/m2/repository</localRepository>。

          这样,我们就完成了maven的安装配置及自定义本地仓库的位置,在命令行中输入mvn help:system,可以看到本地maven为我们从中央仓库中下载了一些文件到本地仓库中。

    (2)eclipse中配置maven

          eclipse是我们熟悉的IDE,可以直接通过下载m2eclipse插件来完成maven的安装及配置,这种方式不便利maven的管理及使用。本人推荐使用本地安装maven后在eclipse中进行配置。具体的完成(1)中所有操作确定maven安装配置正确后,首先在eclipse->Window->Preferences->Maven->Installations中添加maven,如 下图:

     

    然后在eclipse->Window->Preferences->Maven->User Settings中设置本地仓库及对应setting.xml文件位置,具体如下(我拷贝一份了setting.xml文件到本地仓库m2文件夹下,用来说明这是针对该仓库的设置,也可以直接使用maven安装文件下的setting.xml文件):




    以上就完成了eclipse配置本地安装的maven环境,如果在eclipse中Window->Preferences没有出现maven插件选项,可以参考博客http://blog.csdn.net/truong/article/details/37834053 来解决问题。

    三. maven常用命令

          本节介绍几个maven常用的命令,以备遗忘时可以查看。

    mvn -version                 查看maven的版本及配置信息

    mvn archetype:create   -DgroupId=    DartifactId=    构建java项目

    mvn archetype:create   -DgroupId=    DartifactId=    -DarchetypeArtifactId=maven-archetype-webapp 创建web项目

    mvn compile                编译项目代码

    mvn package               打包项目

    mvn package -Dmaven.test.skip=true   打包项目时跳过单元测试

    mvn test                      运行单元测试

    mvn clean                    清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean package, mvn clean test

    mvn install                   打包后将其安装在本地仓库

    mvn deploy                  打包后将其安装到pom文件中配置的远程仓库

    mvn eclipse:eclipse      将maven生成eclipse项目结构

    mvn eclipse:clean         清除maven项目中eclipse的项目结构

    mvn site                       生成站点目录

    mvn dependency:list      显示所有已经解析的所有依赖

    mvn dependency:tree     以树的结构展示项目中的依赖

    mvn dependency:analyze  对项目中的依赖进行分析,依赖未使用,使用单未引入

    mvn tomcat:run              启动tomcat

    四. maven中pom文件

          pom文件是maven中最重要的文件,以上命令的也需要根据pom文件进行运行。一般在构建完maven项目后需要修改pom文件添加诸如依赖关系,打包机制及一些项目的详细信息。一般的pom包含如下一些基本的信息:

    groupId:项目或者组织的唯一标志

    artifactId:项目的名称

    version:项目的版本

    packaging:打包机制

    name:用户描述项目的名称

    url:应该是只是写明开发团队的网站

    其中groupId,artfactId及version是所有的pom文件必须拥有的。除了这些基本信息外就是pom的依赖,集成,合成关系,插件,构建信息的一些声明,这里不进行详细介绍,下面给出一个简单的pom文件示例如下:


          以上就是本文中关于maven学习过程中的一些记录,希望可以帮助自己更好的掌握maven的使用,也可以帮助maven的初学者掌握maven的使用。作为初学者,希望和大家共同进步,如果有任何错误,欢迎大家纠正。

    展开全文
  • maven

    千次阅读 多人点赞 2018-07-11 16:03:00
    maven 什么是maven 什么是maven项目 pom.xml—— jar包的定位 仓库——jar包的存储 JUnit maven 什么是maven Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom....
  • maven之四】 --maven仓库和常用命令

    千次阅读 热门讨论 2017-02-09 18:06:27
     私服是一种特殊的远程仓库,它 是架设在局域网内的仓库服务,服务代码广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在构件,则从外部的远程仓库下载...
  • Maven详解及常用命令

    万次阅读 多人点赞 2018-07-23 14:54:52
     Maven是什么? Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中心信息管理项目的构建,报告和文档。 二. Maven优点: 1.约定优于配置 2.测试支持 3.构建简单 ...
  • maven常见插件和命令

    2018-05-26 20:42:51
    maven-antrun-pluginhttp://maven.apache.org/plugins/maven-antrun-plugin/maven-antrun-plugin能让用户Maven项目中运行Ant任务。用户可以直接在该插件的配置以Ant的方式编写Target,然后交给该插件的run目标去...
  • maven常用命令详解 (完整版)

    千次阅读 2020-02-29 13:53:08
    maven常用命令详解 (完整版) 2012-11-26 17:46:47|分类:maven|标签:maven|举报|字号订阅 从别处拷贝来的maven项目,有时候会出现不能debug关联的情况,即按住ctrl键后不能跳转到相应的类或方法,这是需要...
  • maven生命周期及常见命令

    千次阅读 2018-07-07 17:09:17
    我们可以使用maven提供的命令来和maven进行交互,让maven帮我们测试,编译,打包等等一系列操作。对于一些新手来说记住那些mvn 命令还是难以接受的,毕竟现在主流的eclispe和idea都可以集成maven,我们完全可以利用...
  • maven的仓库配置及基本命令教程

    千次阅读 2018-08-19 17:37:25
    maven 的作用:   :一: 管理jar:    1: 增加第三方jar包 (将需要的jar的坐标配置在pom文件里,maven将会自动下载)   2: jar包之间的依赖关系 (普通项目,如果依赖A.jar,然后A.jar又依赖于B.jar。...
  • 常用命令 mvn clean 清理项目 mvn compile 编译源代码 mvn test 运行测试 mvn test-compile 编译测试代码 mvn package 打包 mvn install 将包上传到本地仓库 mvn deploy 上传私服 生命周期 Maven的生命周期就是为了...
  • NULL 博文链接:https://ailikes.iteye.com/blog/2229719
  • 确认之前的安装配置没问题,如下图所示 确认完这些之后,我们还得把这个%MAVEN_HOME%\bin放入用户变量中 然后再打开cmd运行mvn -version 即可得到下图
  • 命令创建maven项目并编译

    千次阅读 2017-08-17 23:17:21
    下载Maven3.5.0,体积不大。 配置maven环境变量: M2_HOME; PATH:增加%M2_HOME%\bin; 配置maven(重要): 打开maven目录\conf\settings.xml文件。 (1)修改本地仓库Repository>为...
  • java调用cmd执行maven命令

    千次阅读 2017-04-07 20:24:49
    java调用cmd执行maven命令 一、原理介绍 Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令。 cmd /c dir 是执行完dir命令后封闭命令窗口。 cmd /k dir 是执行完dir命令后不封闭命令窗口。...
  • 六个必须掌握的maven命令: 1. mvn help:describe 你是否因为记不清某个插件有哪些goal而痛苦过,你是否因为想不起某个goal有哪些参数而苦恼,那就试试这个命令吧,它会告诉你一切的. 参数: 1. -Dplugin=pluginName 2. ...
  • Maven命令执行流程解析和说明

    万次阅读 2014-03-26 15:01:05
    1: 本机安装Maven,可参考其它网站或者我的博客,修改MAVEN( setting.xml文件) 存放本机资源库的位置:D:\Repositories\Maven 2:打开ecilpse可以查看MAVEN相关命令;如图1  
  • 1:安装maven, 设置maven系统环境变量,一般下载后解压即可以使用, 默认的setting配置本地仓库路径为用户下的.m目录下,可以修改为指定目录:这是我指定的本地仓库 2: 一个你要导入到本地仓库的jar包,这里我用...
  • Intelij idea运行maven命令

    万次阅读 2018-08-04 15:32:36
    推荐原因  从2年前发现公司的开发同学开始使用Intelij idea,工具自带很多插件,功能也很强大...maven命令格式 mvn [plugin-name]:[goal-name]   操作前提 1. 用户已安装intelij idea 2. 用户已创建项目demo ...
  • maven常用命令maven的核心概念

    千次阅读 2018-03-28 16:53:07
    maven常用命令maven的核心概念 Maven常用命令 命令 解释 mvn compile 编译项目 mvn package 打包发布 mvn clean 清理(删除target目录下编译内容) mvn install 打包后将其安装在本地...
  • org.codehaus.mojo exec-maven-plugin 1.6.0 script-chmod ...
  • 它提供了一个项目浏览器和执行Maven命令的快捷方式,从而为使用Maven的Java开发人员改善了用户体验。 支持从Maven Archetype生成项目。 支持生成有效的POM。 提供常见目标,插件目标和自定义命令的快捷方式。 ...
  • maven--mvn命令

    万次阅读 2020-08-18 11:47:24
    maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下, 参数 含义 mvn -v, --version 显示版本信息; mvn -V, --show-version 显示...
  • Maven之利用mvn deploy命令上传包

    千次阅读 2018-07-24 16:34:34
    如果进行deploy时返回Return code is: 401错误,则需要进行用户验证或者你已经验证的信息有误。     二 cmd输入命令   mvn deploy:deploy-file -DgroupId=...
  • IDEA 在 Terminal 端配置 maven 运行命令

    千次阅读 2020-07-25 11:34:08
    1、首先打开IDEA工具,在Terminal 执行mvn命令,提示:bash: mvn: command not found D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.3\plugins\maven\lib\maven3\bin 2、IDEA工具,是自带Maven插件的,...
  • Maven详解(三)Maven目录和常用命令

    千次阅读 2018-03-06 13:56:35
    maven目录bin目录: 该目录包含了mvn运行的脚本,这些脚本用来配置java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。boot目录: 该目录只包含一个文件,该文件为plexus-classworlds-2.5.2.jar。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,096
精华内容 24,838
关键字:

maven查看用户命令