继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

项目管理工具:Maven

幕布斯6054654
关注TA
已关注
手记 1135
粉丝 218
获赞 1009

刚到公司实习不久,现在要做一个RESTful规范的微服务,第一个学习的工具就是Maven,学习《Maven实战》,提炼笔记。

Maven是什么,作用是什么?

Maven是项目管理工具,主要有两大作用:项目构建和依赖管理。项目构建就是项目编译、测试、集成发布实现自动化,依赖管理是很方便的功能,只要把当前项目所依赖的构件(jar、war等)写到pom配置文件中,就可以从仓库中自动导入对应的构件及构件依赖的其他构件,不同的maven项目共享一个构件仓库,项目引用仓库中的构建,避免重复下载。

Maven如何安装?

第一步 安装JDK,JDK的安装与环境变量的配置,在maven项目构建的过程中需要编译和运行,也就需要javac.exe和java.exe。
第二步 从maven.apache.org下载maven的.zip包(Linux系统下载.tar.gz),解压到想要放置的目录下,配置环境变量MAVEN_HOME和PATH,MAVEN_HOME为maven的根目录,PATH添加%MAVEN_HOME%\bin,配置完成,在cmd中测试mvn命令是否有效 mvn -version。(如果重启之后mvn命令无效,直接用MAVEN_HOME的路径替换PATH中的路径,删除MAVEN_HOME)

Maven如何使用?

Maven集成在IDE环境中就不多说了,讲解用手动的方式创建项目到执行mvn命令完成构建。
第一步 创建项目 在指定位置创建文件夹命令为项目名称,在文件夹内创建文件pom.xml,在pom.xml中添加如下内容:

<?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.helloworld</groupId>
    <artifactId>helloworld-first</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Maven Hello World Project</name></project>

groupId、artifactId、version为项目的基本坐标,项目构建完成作为其他项目的依赖构建,就是通过坐标定位,所以maven要求所有项目都应该有坐标。groupId格式为倒过来的域名,以总项目名结尾,artifactId格式推荐为总项目名-模块名,方便在文件系统中对同一项目不同模块的构件归类,version为当前项目的版本号,版本号后缀为snapshot表示不稳定版,name为项目名称。构件的名称组成为artifactId-version.package
第二步 编写主代码 Maven规定主代码在src/main/java/下,Maven也会在该路径下查找主代码,在项目根目录下依次创建src/main/java文件夹,在java文件夹下依次创建包com.helloworld.first,在first下创建First.java。编写主代码如下:

package com.helloworld.first;public class First{    public String sayHello(){        return "Hello Maven!";
    }    public static void main(String[] args){
        System.out.println( new First().sayHello());
    }
}

第三步 编译运行:

mvn clean compile  清理/target并编译
mvn exec:java -Dexec.mainClass="com.helloworld.first.First"  无参运行
mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.args="arg0 arg1 arg2"  有参运行(此处不需要)

第四步 编写测试代码 打包时不会打包测试代码,仅测试程序是否正确。
先在pom.xml中添加JUnit标准单元测试依赖:

<?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.helloworld</groupId>
    <artifactId>helloworld-first</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Maven Hello World Project</name>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>
    </dependencies></project>

dependencies标签下添加依赖构件,groupId、artifactId、version基本坐标确定某个依赖包,scope是依赖范围,默认是compile,也就是编译、测试都会依赖该包,scope是test,只有测试会依赖该包。
Maven默认在src/test/java下查找test代码,在java下创建包com.helloworld.first,first文件夹下创建FirstTest.java,添加如下代码:

package com.helloworld.first;import static org.junit.Assert.assertEquals;import org.junit.Test;public class FirstTest{    @Test
    public void testSayHello(){
        String result = new First().sayHello();
        assertEquals("Hello Maven!",result);
    } 
}

第五步 单元测试

mvn test

以上手动建立的文件夹就是项目骨架,当然可以用Maven自带的项目骨架,命令mvn archetype:generate,根据提示选择骨架并创建项目。如果必要也可以自己写archetype。

Maven项目构建命令有哪些?
mvn clean 清理/target(就是编译或打包之后的文件夹)
mvn compile 编译
mvn test  单元测试(执行编译、测试)
mvn package 打包(执行编译、测试、打包)
mvn install  发布到仓库(执行编译、测试、打包、发布)
如何查找构件版本?

查找中心仓库构建 https://search.maven.org/,输入artifactId名称可以搜索到相关公司的项目及版本。

Maven仓库是什么?

Maven仓库分为远程仓库、私服、本地仓库,中央仓库是maven默认的远程仓库,私服是在局域网内搭建的仓库,减少带宽的占用。镜像与对应的远程仓库构建一致,但是有些可以加快下载速度。本地仓库默认在~/.m2/repo下,关于仓库和镜像的配置可以在settings.xml中找到,也可以在settings.xml中修改本地仓库的存储位置。

Maven的pom.xml和settings.xml有什么作用?

pom.xml是当前项目的配置,在项目的根目录下,主要配置项目的坐标(groupId、artifactId、version等),依赖构建(dependencies)等。
settings.xml是Maven的配置,分为全局的和用户的,全局的settings位于maven/conf/下,用户的settings是复制全局的settings到~/.m2/下,用户的settings优先配置,一般不建议修改全局的settings,有利于项目升级不用再修改settings。
settings中可以配置代理、远程仓库、镜像、本地仓库位置等。



作者:杨福佳
链接:https://www.jianshu.com/p/a4e743403bf0


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP