Maven(4)gupao--不要做一个低效的程序员

超级pam的位置:
maven-model-builder-3.3.9.jar/org/apache/maven/model/pom-4.0.0.xml

setting.xml的加载顺序:
这里写图片描述

在我看来你的大脑应该是一个搜索引擎,不应该是一个内存,不应该是一个磁盘,你要知道,来什么我去哪找,找什么,但是该背的也要背。

pom.xml

groupId   com.gupaoedu
artfactId 功能命名
version 版本号
packaging  打包方式 默认是jar
dependencyManagement
    1.  只能出现在父pom
    2.  统一版本号
    3.  声明 (子POM里用到再引)
Dependency
    1.  Type  默认jar
    2.  scope(如果你是一个追求极致的人,可以用scope这个概念去优化你的pom文件)
    a)  compile  编译(默认是compile)   例如spring-core
    b)  test 测试
    c)  provided 运行时不需要的jar包  例如 servlet
    d)  runtime 只有在运行时才需要用到 例如JDBC驱动实现(JDBC只定义接口,具体接口的实现由数据库厂商来完成,在编译的时候,只需要用接口就行了,不关心有没有对应的实现类。)
    e)  system 本地一些jar  例如短信jar
f)  依赖传递

这里写图片描述


    g)  依赖仲裁
        i.  最短路径原则
        ii. 加载先后原则(下面的会覆盖掉上面的)
    h)  exclusions
        i.  排除包

怎么看依赖树

首先配置maven环境变量

    mvn dependency:tree > d.txt
 所以啊,做程序员,为什么别人的效率高,别人一行命令解决啦,你还加班,你加班是应该的,不觉得么。

如何一行命令改父pom的版本号

首先使用下面的插件
<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.3</version>
</plugin>

这行命令是:

mvn version:set -DnewVersion=1.1-SNAPSHOT

生命周期 lifecycle/phase/goal

A Build Lifecycle is Made Up of Phases
A Build Phase is Made Up of Plugin Goals

这里写图片描述

版本管理

a)  1.0-SNAPSHOT
    i.  repository 删除
    ii. mvn clean package -U (强制拉一次)

b)  主版本号.次版本号.增量版本号-<里程碑版本>
    1.0.0-RELAESE

常用命令

    a)  compile

    b)  clean    删除 target/
        命令:mvn clean
    c)  test       test case junit/testNG
        命令:mvn 
    d)  package 打包

    e)  install    把项目install到local repo

    f)  deploy    发本地jar发布到remote


Build Order的执行顺序由两部分决定:module的顺序和依赖关系。

插件

a)  常用插件
    i.  https://maven.apache.org/plugins/ 
    ii. http://www.mojohaus.org/plugins.html 
    iii.findbugs 静态代码检查
        命令:
            mvn findbugs:findbugs


    iv. versions 统一升级版本号
        1.  mvn versions:set -DnewVersion=1.1
    v.  source 打包源代码
    vi. assembly 打包zip、war
    vii.tomcat7

自定义maven插件

自定义maven插件的参考文档: https://maven.apache.org/guides/plugin/guide-java-plugin-development.html
a) maven-plugin
b) extends AbstractMojo

c)

package com.gupao;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import java.util.List;

@Mojo(name = "gupaoedu", defaultPhase = LifecyclePhase.PACKAGE)
public class GupaoMojo extends AbstractMojo {

    @Parameter
    private String msg;

    @Parameter
    private List<String> options;

    @Parameter(property = "args")
    private String args;

    public void execute() throws MojoExecutionException, MojoFailureException {
        System.out.println("gupaoedu plugin  !!!" + msg);
        System.out.println("gupaoedu plugin  !!!" + options);
        System.out.println("gupaoedu plugin  !!!" + args);
    }

}

d) mvn install
e) 参数传递

Profile

a)  使用场景 dev/test/pro
b)  setting.xml 家和公司两套

仓库

a)  下载
b)  安装 解压
c)  使用http://books.sonatype.com/nexus-book/reference3/index.html 
i.  http://192.168.1.6:8081/nexus
ii. admin/admin123
d)  发布
    发布的时候,项目中pom文件的配置

这里写图片描述

发布的时候,本地中setting.xml的配置

这里写图片描述

e)  下载jar配置
i.  配置mirror
ii. Profile

archetype 模版化

a)  生成一个archetype
    在项目的根目录下,执行下面的命令
    i.  mvn archetype:create-from-project
    ii. cd /target/generated-sources/archetype
    iii.    mvn install

b)  从archetype创建项目 (命令行新建)
    mvn archetype:generate -DarchetypeCatalog=local
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值