代码之家  ›  专栏  ›  技术社区  ›  2dor

Maven上传64MB jar未完成

  •  0
  • 2dor  · 技术社区  · 2 年前

    我有一个多模块SpringBoot应用程序,我将其部署到artifactory。不幸的是,上传到artifactory失败了,因为Jenkins构建会检查文件是否存在,而不会,因为文件没有上传。

    子模块上传成功:

    [INFO] Uploading to snapshots: <jar path>
    [INFO] Uploaded to snapshots: <jar path>  (241 kB at 759 kB/s)
    
    

    主应用程序模块日志:

     Uploading to snapshots: <jar>
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project <project>: Failed to deploy artifacts: Could not find artifact <application module jar> in snapshots (<artifactory path>) -> [Help 1]
    

    正如你在上面看到的,对于子模块,我也收到了“上传”的消息。对于主应用程序模块,我只得到“上传”,而不是“上传”。我能看到的主要区别是尺寸。SpringBoot应用程序jar为60MB,子模块为KB。我认为构建会触发上传,但随后会直接检查是否已上传,但可能上传没有完成。。。 我该怎么做才能解决这个问题并获得成功的构建?

    0 回复  |  直到 2 年前
        1
  •  0
  •   Andrey B. Panfilov    2 年前

    两条建议:

    1. 版本 2.8.2 属于 maven-deploy-plugin 它于2014年发布,距今已有8年,绝对值得尝试更新(以及 maven 也)
    2. 部署 SNAPSHOT 版本没有意义:没有可靠的工作方式 快照 依赖关系,这就像用左轮手枪玩五轮改进的俄罗斯轮盘赌一样,这种工件只有两种状态在本地缓存:要么已经过时,要么你不知道发生了什么变化。

    特别注意那些喜欢用快照版本调情的人。

    快照概念与SDLC没有任何共同之处,这只是将不可用的东西放在另一个地方的糟糕尝试 DML 或分区。

    如果你需要构建某种功能预览/夜间发布,maven确实允许在不影响整个SDLC的情况下这样做:

    mvn -e --batch-mode -Prelease release:clean release:prepare \
     -Darguments='-DaltReleaseDeploymentRepository=... -DaltSnapshotDeploymentRepository=...' \
    # version convention for fp release
     -DreleaseVersion=1.0.0-${sha} \
    # continue staying on snapshot version
     -DdevelopmentVersion=1.0.0-SNAPSHOT \
     -DpushChanges=false \
     -DpreparationGoals="clean deploy"
    

    跑步的人 mvn deploy 反对 快照 版本只是不明白他们真正在做什么,以及后果是什么。至少应该是 mvn deploy -Dmaven.install.skip=true

        2
  •  0
  •   2dor    2 年前

    问题是,我在父pom和应用程序模块pom中都定义了存储库。 我不知道为什么这会导致Maven阻止将jar上传到Artifactory,但我确信这就是问题所在。

    在我看来,2.8.2是最新的完整版本是可以的,我们想上传到Artifactory的SNAPSHOT版本可能有商业原因。