maven本地仓库批量上传私服

本文介绍了一种使用Python解决的问题,即在面临大量自定义Maven依赖包需要上传到私服时,通过编写Python脚本自动化处理,减少了手动操作的时间。脚本利用os、subprocess和re模块,解析文件名获取groupId、artifactId和version等信息,并调用mvndeploy:deploy-file命令进行上传。
摘要由CSDN通过智能技术生成

        最近做项目遇到一个问题,从别的地方拿过来的工程是用maven构建的,而且用了许多自有的依赖包,如果一个个的上传到私服简直是浪费时间,于是用Python 写了一个批量上传的工具,简化自己的工作量。

        使用的是Python3,分别依赖了os、subprocess、re包:

  1. os:读取本地仓库下的jar和pom;
  2. subprocess:执行mvn deploy命令;
  3. re:正则识别文件名中的groupId、artifactId、version等信息。

        以下为完整代码

import os
import subprocess
import re

REPO_URL = "仓库url"
REPO_ID = "仓库id"
REPO_USERNAME = "用户名"
REPO_PASSWORD = "密码"
FILES_DIR = "本地仓库地址"

def upload_file(file_path):
    filename = os.path.basename(file_path)
    match = re.match(r'^(.+?)-(?:(\d+\.\d+(?:\.\d+)?(?:-[\w\.]+)?)?(?:-(.*?))?)((?:-SNAPSHOT)?\..+)$', filename)
    if match:
        artifact_id, version, classifier, packaging = match.groups()
        if classifier is None:
            classifier = ''
        packaging = packaging.replace(".","")
        group_id = os.path.relpath(os.path.dirname(os.path.dirname(os.path.dirname(file_path))), FILES_DIR).replace(os.path.sep, ".")
        print(f"Uploading {filename} (groupId={group_id}) (artifact_id={artifact_id}) (version={version}) (packaging={packaging})")
        if (filename.find("通过文件名过滤") != -1):
            subprocess.run([
                "mvn", "deploy:deploy-file",
                "-DgroupId=" + group_id,
                "-DartifactId=" + artifact_id,
                "-Dversion=" + version,
                "-Dpackaging=" + packaging,
                "-Dfile=" + file_path,
                "-DrepositoryId=" + REPO_ID,
                "-Durl=" + REPO_URL,
                "-Drepository.username=" + REPO_USERNAME,
                "-Drepository.password=" + REPO_PASSWORD,
                # "-DpomFile=" + file_path.replace("jar", "pom")
            ], check=True)

for root, dirs, files in os.walk(FILES_DIR):
    for name in files:
        file_path = os.path.join(root, name)
        if name.endswith(".jar") or name.endswith(".pom"):
            try:
                upload_file(file_path)
            except Exception as e :
                print(e)
要将本地的 maven 仓库批量上传私服,可以按照以下步骤进行: 1. 首先,确保你已经创建了私服仓库,可以使用 Nexus、Artifactory 等工具进行搭建。 2. 确认你本地 maven 的配置文件(settings.xml)中已经配置了私服仓库地址和认证信息。一般情况下,配置文件位于 ~/.m2/settings.xml (Linux/macOS) 或 C:\Users\username\.m2\settings.xml (Windows)。 3. 打开终端或命令行界面,进入到本地 maven 仓库的根目录,该目录默认为 ~/.m2/repository (Linux/macOS) 或 C:\Users\username\.m2\repository (Windows)。 4. 使用以下命令将本地仓库上传私服: ```shell mvn deploy:deploy-file -Durl=<私服仓库地址> -DrepositoryId=<私服仓库ID> -Dfile=<本地仓库文件路径> -DgroupId=<组织ID> -DartifactId=<项目ID> -Dversion=<版本号> -Dpackaging=<打包类型> ``` 其中,需要将 `<私服仓库地址>` 替换为实际的私服仓库地址,`<私服仓库ID>` 替换为私服仓库的 ID(在 settings.xml 中配置),`<本地仓库文件路径>` 替换为本地仓库文件的路径,`<组织ID>`、`<项目ID>`、`<版本号>`、`<打包类型>` 分别替换为实际的组织 ID、项目 ID、版本号和打包类型。 5. 重复上述命令,对每个需要上传的本地仓库文件进行操作,直到所有文件都上传完成。 注意:在执行命令时,确保你的网络连接稳定,并且私服仓库地址和认证信息在 settings.xml 中正确配置。另外,如果你有多个私服仓库,可以在 settings.xml 中配置多个 `<server>` 元素来表示每个仓库。 通过以上步骤,你可以将本地的 maven 仓库批量上传私服,使其他开发者可以从私服获取到你上传的第三方库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_27280353

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值