zoukankan      html  css  js  c++  java
  • maven02-----Maven项目构建的初次使用

     一. 创建Maven项目

    1.1 建立一个Hello项目

    当然也可以通过java project的方式创建符合Maven约定的目录结果的项目,并手动建立pom.xml文件,但是太繁琐了。因此,这里直接建立maven项目。note: eclipse有内建的maven项目创建功能,倘若不喜欢,可以装一些差插件,使用原理是一样的。

    创建好以后会如下目录结构:

    实际上,可能还需要创建一些resources文件夹,类似如下目录结构:

    创建过程中的groupId,artifact id,version等,后面会详细介绍。

    • groupId: 定义了项目属于哪个组,这个组往往和项目所在的组织或公司有关。比如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp
    • artifactId:定义了当前maven项目在组中唯一的ID
    • version:制定了项目当前的版本,snapshot意为快照,说明该项目还处于开发中,是不稳定的版本。

    (1) 在src/main/java/com.test.hello包下新建立一个类Hello.java

    package com.test.hello;
    
    public class Hello {
        public String sayHello(String name) {
            return "Hello "+name+"!";
        }
    
    }

    (2) 在src/test/java/com.test.hello下创建一个HelloTest.java

    package com.test.hello;
    
    import org.junit.Test;
    
    import junit.framework.Assert;
    
    public class HelloTest {
        @Test
        public void testHello() {
            Hello hello=new Hello();
            String results=hello.sayHello("Hermioner");
            Assert.assertEquals("Hello Hermioner!", results);
        }
    
    }

    1.2 使用Maven编译、清理、测试、打包项目

    (1)使用Maven编译项目,编译项目的命令是:“mvn compile

    打开cmd命令行,进入Hello项目根目录执行“mvn compile"命令编译项目的java类

    note:执行了这个命令后,会下载一些依赖包到maven repository中(本地仓库中),方便下次直接从这里读取已经下载了的依赖包。因为,我们的测试中用到了junit,因此,第一次使用的话,本地仓库没有,需要到中央仓库取下载对应的Junit的jar包到本地仓库。

    比如:

    编译成功之后,可以看到hello项目的根目录下多了一个【target】文件夹,这个文件夹就是编译成功之后Maven帮我们生成的文件夹,如下图所示:

    打开【target】文件夹,可以看到里面有一个【classes】文件夹,如下图所示:

    【classes】文件夹中存放的就是Maven我们编译好的java类,如下图所示:

    这就是使用Maven自动编译项目的过程。

    (2)使用Maven清理项目,清理项目的命令是:mvn clean“

    进入Hello项目根目录执行"mvn clean"命令清理项目,清理项目的过程就是把执行"mvn compile"命令编译项目时生成的target文件夹删掉,如下图所示:

    (3) 使用Maven测试项目,测试项目的命令是:”mvn test"

    进入Hello项目根目录执行"mvn test"命令测试项目,如下图所示:

    测试成功之后,可以看到hello项目的根目录下多了一个【target】文件夹,这个文件夹就是测试成功之后Maven帮我们生成的文件夹,如下图所示:

    打开【target】文件夹,可以看到里面有一个【classes】和【test-classes】文件夹,如下图所示:

    也就是说,我们执行执行"mvn test"命令测试项目时,Maven先帮我们编译项目,然后再执行测试代码。

    (4)使用Maven打包项目,打包项目的命令是:"mvn package"

      进入Hello项目根目录执行"mvn package"命令测试项目,如下图所示:

    打包成功之后,可以看到hello项目的根目录下的【target】文件夹中多了一个Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是打包成功之后Maven帮我们生成的jar文件,如下图所示:

    5、使用Maven部署项目,部署项目的命令是:"mvn install"

    note: 必须执行mvn install才可以让别的maven项目引入这个jar,因为只有将构建下载到本地仓库以后,才可以让所有的maven项目使用。同理,只有将hello项目的构建安装到本地仓库,其它maven项目才可以使用。

    进入Hello项目根目录执行"mvn install"命令测试项目,如下图所示:

    安装成功之后,首先会在hello项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是安装成功之后Maven帮我们生成的jar文件,如下图所示:

    除此之外,在我们存放Maven下载下来的jar包的仓库也会有一个Hello-0.0.1-SNAPSHOT.jar,所以Maven安装项目的过程,实际上就是把项目进行【清理】→【编译】→【测试】→【打包】,再把打包好的jar放到我们指定的存放jar包的Maven仓库中,如下图所示:

    所以使用"mvn install"命令,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能够做的事情最多。

    1.2 组合使用Maven的命令

    maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合如下:

      (1)先清理再编译:"mvn clean compile",如下所示:

    还有的就是"mvn clean test","mvn clean package","mvn clean install",这些组合命令都比较常用。

      以上就是关于Maven构建项目的各个个过程演示。

    note:项目的主代码会被打包到最终的构建中(如jar),而测试代码只能在运行测试时用到,不会被打包。

    1.3 mvn命令的添加

    我们选中maven项目或者pom.xml文件以后,点击右键run as---会出现一些mvn命令。如果我们不满足于这些,我们可以自己添加,让它出现在run as的可选菜单中。

    也可以通过选择maven build,在弹出的对话框中添加想要使用的命令。

    二. 在别的项目中使用通过Maven安装生成的项目的jar包

    在上面,我们使用mvn install命令将hello这个项目打包成了Hello-0.0.1-SNAPSHOT.jar包并且发布到本地的maven仓库E: epositorymegaclmavenHello.0.1-SNAPSHOT中,下面我们来看看如何在别的项目中使用Hello-0.0.1-SNAPSHOT.jar

    2.1 方法一

    直接在pom.xml文件中配置hello项目打包生成jar包,即:

    2.2 方法2

    在根目录下新建立一个lib文件夹,将hello的jar包粘贴进来,并build path进来,这样就可以使用hello项目中的东西拉。

     三. 通过eclipse创建maven项目的底层实现原理简介

    在通过eclipse创建maven项目时,实际上还是采用的archetype生成了项目骨架。

     执行相关的archetype命令,就可以创建出上面目录结构的maven项目拉。

    3.1 pom.xml文件

    通过Maven构建的JavaProject,在项目的根目录下都会存在一个pom.xml文件,进入myapp目录,可以看到有一个pom.xml文件,这个文件是Maven的核心。如下图所示:

      

        1、pom意思就是project object model。

        2、pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。

        3、pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml

      pom.xml文件的内容如下:

     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 
     5   <groupId>com.mycompany.app</groupId>
     6   <artifactId>myapp</artifactId>
     7   <version>1.0-SNAPSHOT</version>
     8   <packaging>jar</packaging>
     9 
    10   <name>myapp</name>
    11   <url>http://maven.apache.org</url>
    12 
    13   <properties>
    14     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    15   </properties>
    16 
    17   <dependencies>
    18     <dependency>
    19       <groupId>junit</groupId>
    20       <artifactId>junit</artifactId>
    21       <version>3.8.1</version>
    22       <scope>test</scope>
    23     </dependency>
    24   </dependencies>
    25 </project>

    pom.xml文件的节点元素说明:

    •     <project>       pom文件的顶级节点
    •     <modelVersion>     object model版本,对Maven2和Maven3来说,只能是4.0.0 
    •     <groupId>       项目创建组织的标识符,一般是域名的倒写
    •     <artifactId>      定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项 目
    •     <version>        当前项目的版本,SNAPSHOT,表示是快照版本,在开发中
    •     <packaging>      打包的方式,有jar、war、ear等
    •     <name>        项目的名称
    •     <url>          项目的地址
    •     <properties>    属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    •     <dependencies>     构建项目依赖的jar

      其中由groupId、artifactId和version唯一的确定了一个项目坐标

    参考文献:

    《Maven实战》

    https://www.cnblogs.com/xdp-gacl/p/4051690.html

  • 相关阅读:
    [BZOJ1492] [NOI2007]货币兑换Cash 斜率优化+cdq/平衡树维护凸包
    [BZOJ2638] 黑白染色
    [BZOJ2006] [NOI2010]超级钢琴 主席树+贪心+优先队列
    [BZOJ3698] XWW的难题 网络流
    [BZOJ2151] 种树 贪心
    js中的闭包理解一
    HTML5 input placeholder 颜色修改示例
    26 个 jQuery使用技巧
    JS原型与原型链(好文看三遍)
    文字和图片垂直居中
  • 原文地址:https://www.cnblogs.com/Hermioner/p/10247214.html
Copyright © 2011-2022 走看看