You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

将代码推送至Nexus Maven仓库时遇部署错误求助

解决Maven Deploy到Nexus的依赖部署问题

我来帮你搞定这个Maven部署到Nexus的问题!你现在碰到的新错误,核心是Maven试图把你的API依赖的第三方jar也上传到Nexus,但这些根本不是你要部署的产物,而且你的Nexus仓库大概率不允许上传第三方库,或者权限设置不对。下面一步步来解决:

1. 给第三方依赖设置正确的Scope

你的项目是给其他插件调用的核心API,那些像Spigot这类的运行依赖,应该由依赖你的插件自己去引入,所以得把这些依赖的scope改成provided

打开你的pom.xml,找到所有第三方运行依赖,修改成这样:

<dependency>
    <groupId>org.spigotmc</groupId>
    <artifactId>spigot-api</artifactId>
    <version>1.20.1-R0.1-SNAPSHOT</version>
    <scope>provided</scope> <!-- 加上这行,告诉Maven这个依赖不用打包部署 -->
</dependency>

provided的意思是:这个依赖在运行环境里已经有了,Maven只在编译你的代码时用它,不会把它打包进你的产物,也不会尝试上传到Nexus。把所有不属于你自己开发的依赖都这么改就行。

2. 给Pom.xml加上部署仓库配置

你得明确告诉Maven要把你的API部署到Nexus的哪个仓库,在pom.xml里加上这段配置:

<distributionManagement>
    <repository>
        <id>nexus</id> <!-- 这个id必须和你settings.xml里server的id完全一致 -->
        <name>Nexus正式版仓库</name>
        <url>http://192.168.0.145/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus</id> <!-- 同样要匹配settings里的server id -->
        <name>Nexus快照版仓库</name>
        <url>http://192.168.0.145/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

注意哦,你之前用的http://192.168.0.145/nexus/content/groups/public是仓库组,用来下载依赖的,不能用来上传,上传得用具体的release或snapshot仓库地址。

3. 检查Settings.xml的配置匹配度

你的settings.xml里的配置基本没问题,但要确认两点:

  • servers里的idnexus,和上面pom里的仓库id完全一致,这样Maven才能用你配置的admin账号密码去Nexus认证。
  • 登录Nexus后台确认admin账号有release和snapshot仓库的部署权限,不然会报权限错误。

4. 重新执行Deploy命令

把上面的配置改完后,先清理一下项目,再执行部署:

mvn clean deploy

另外,你之前碰到的第一个错误,大概率是因为没加distributionManagement配置,Maven不知道要往哪部署,现在配置好应该就解决了。

内容的提问来源于stack exchange,提问作者Matthew Parks

火山引擎 最新活动