maven备忘

1. 搭建私有库

使用docker搭建私有maven库,docker image为sonatype/nexus3

  1. 建立数据目录
mkdir /path/of/maven/data
chown 200 /path/of/maven/data

nexus3的运行用户id为200,所以需要把数据目录的owner改为200。

  1. 启动服务
docker run -d -p 8081:8081 --name nexus -v /path/of/maven/data:/nexus-data sonatype/nexus3
  1. 登录nexus服务

    在浏览器中输入127.0.0.1:8081,点击sign in链接,默认的管理员用户名为admin密码为admin123
  2. 创建repository

    登录后,在管理员页面,可以创建自己的repository。如果创建自己的私有库,创建时,选择maven2 (hosted),如果创建代理库,则选择maven2 (proxy)。详见参考文档[2]
    1. hosted类型

      这里需要变更的是Version policy,有3个选择:
      1. Release - 表明本库里放置的是正式发布的库文件
      2. Snapshot - 表明本库里放置的是开发中的库文件
      3. Mixed - 表明库里面放置了上述两种库文件
    2. proxy类型

      这里需要填写的是Remote storage项,可以填写aliyun的maven镜像地址http://maven.aliyun.com/nexus/content/groups/public/

经过上面的步骤,私有maven库建立完毕。接下来配置本地的maven配置文件,来使用私有maven库。

2. 配置maven setting.xml

maven设定文件为~/.m2/setting.xml

<settings>
    <profiles>
        <profile>
            <id>dev</id>
            <repositories>
                <repository>
                    <id>mymvn</id>
                    <url>http://127.0.0.1:8081/repository/mymvn/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <servers>
        <server>
            <id>mymvn</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
    <mirrors>
        <mirror>
            <id>alimavenlocal</id>
            <name>aliyun maven local</name>
            <url>http://127.0.0.1:8081/repository/aliyunmaven/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
</settings>

上面的配置文件配置了1个hosted库,1个proxy库。以及上传文件时需要用的用户名密码。这里在profiles中配置repository,可以根据不同的profile使用不同的repository

3. 部署jar到私有库

使用mvn命令把jar文件上传到hosted库,以alipay sdk为例:

mvn deploy:deploy-file \
  -DgroupId=com.alipay \
  -DartifactId=sdk-java \
  -Dversion=20170829142630 \
  -Dpackaging=jar \
  -Dfile=alipay-sdk-java20170829142630.jar \
  -Durl=http://127.0.0.1:8081/repository/mymvn/ \
  -DrepositoryId=mymvn

4. 配置pom.xml使用私有库

按照下面的配置即可下载到刚才上传的alipay sdk

<project>
...
    <repositories>
        <repository>
            <id>mymvn</id>
            <url>http://127.0.0.1:8081/repository/mymvn/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.alipay</groupId>
            <artifactId>sdk-java</artifactId>
            <version>20170829142630</version>
        </dependency>
    </dependencies>
</project>

5. 配置pom.xml,发布编译的成果到hosted库

<project>
...
    <repositories>
        <repository>
            <id>mymvn</id>
            <url>http://127.0.0.1:8081/repository/mymvn/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

pom.xml所在目录运行下面命令,把自己开发的库部署到hosted库中,mvn会根据pom中的version属性判断发布的是release版还是snapshot版。

mvn deploy

6. 版本发布

每次发布的时候,需要修改pom.xml中的版本号,打包,测试,提交代码,上传jar文件到mvn库。上述一系列动作,可以使用release的插件来自动完成。命令如下:

$ mvn release:prepare
...
[INFO] Working directory: /Users/menglj/workspace/qiyitech/pfw
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "pfw"? (cn.com.qiyitech:pfw) 0.4.0: : 
# maven会根据pom中的版本信息来发布,如果pom中写的是`0.4.0-SNAPSHOT`,
# 则发布的版本为`0.4.0`。这里直接回车即可。
What is SCM release tag or label for "pfw"? (cn.com.qiyitech:pfw) pfw-0.4.0: : 
# tag名称,默认即可
What is the new development version for "pfw"? (cn.com.qiyitech:pfw) 0.4.1-SNAPSHOT: : 
# 发布后,下一版本的版本号是多少,可以改为0.5.0-SNAPSHOT

命令执行结束后,会把打包好的package上传到pom中配置的maven库中,修改pom.xml中相应版本号,并提交到版本库中,打上相应的tag。

7. 配置maven镜像

修改maven的settings.xml,增加如下字段:

<settings>
    <mirrors>
        <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>*</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
    </mirrors>
</settings>

如果自己搭建了私有库,在镜像中没有私有库中的内容,则修改mirrorOf属性[3],指明镜像的库ID即可,例如:

<mirrorOf>central</mirrorOf>

或者把不走镜像的私有库ID排除

<mirrorOf>*,!mymvn</mirrorOf>

参考文档

  1. maven 安装alipay-sdk包到本地及远程仓库
  2. maven使用Nexus私有仓库进行管理
  3. maven repository mirrors
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,702评论 18 139
  • |-1-更新内容[6.从仓库解析依赖的机制(重要)] 1Maven仓库作用 仓库用来存储所有项目使用到构件,在ma...
    zlcook阅读 6,070评论 0 25
  • 首先私服是一种衍生出来的特殊的Maven远程仓库,构建私服的好处请看3.5私服 可以帮助大家建立私服的仓库管理软件...
    zlcook阅读 10,555评论 0 32
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,856评论 6 342
  • 第一天
    大健康大未来阅读 133评论 0 0