Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从nexus部署工件的正确方法_Java_Spring_Maven - Fatal编程技术网

Java 从nexus部署工件的正确方法

Java 从nexus部署工件的正确方法,java,spring,maven,Java,Spring,Maven,我正在尝试构建和CI环境,我认为它可以工作,因为我可以将jar自动发布到Nexus中 Git BitBucket Jenkins Nexus OSS 我正在寻找maven项目发布到nexus时自动部署的信息,但我不确定我最初的想法 我最初的想法是从Nexus3下载最新的工件并使用mvn spring boot:run,但我不确定我的决定 我阅读了有关Puppet的信息,但我不确定这个选项,有人能帮我了解这个过程吗?或者在StackOVerflow中向我发送关于此问题的另一个链接 问候 在詹金斯

我正在尝试构建和CI环境,我认为它可以工作,因为我可以将jar自动发布到Nexus中

Git
BitBucket
Jenkins
Nexus OSS
我正在寻找maven项目发布到nexus时自动部署的信息,但我不确定我最初的想法

我最初的想法是从Nexus3下载最新的工件并使用mvn spring boot:run,但我不确定我的决定

我阅读了有关Puppet的信息,但我不确定这个选项,有人能帮我了解这个过程吗?或者在StackOVerflow中向我发送关于此问题的另一个链接


问候

在詹金斯建立管道:

  • 第一个作业构建工件并将其上载到存储器(在您的情况下是Nexus)。它必须确定上传的版本-最简单的方法是通过作业本身设置版本,然后上传已知版本(请参阅底部的示例脚本)
  • 然后将已知版本传递给下游作业(如部署到环境)。您需要告诉Jenkins您刚刚部署了哪个版本-可以将其写入一个键值文件,然后使用类似EnvInject插件的东西将其作为一个env var读取
  • 要从Nexus下载工件,请使用wget/curl:

    http://nexus.domain/nexus/service/local/artifact/maven/redirect?r={repository}&g={groupId}&a={artifactId}&v={version}&p={type}

  • Jenkins有几个用于构建管道的插件,但您可以从一个简单的内置作业开始,调用其他作业

几点注意:

  • 不要使用Maven进行部署。Maven是一个构建工具,不适合部署。编写bash脚本,并可能使用Docker实现部署自动化
  • 不要使用最新的/SNAPSHOT/RELEASE版本-您需要进行确定性部署(如果使用相同的参数重复部署,则部署相同的工件)
设置类似快照的版本的示例脚本(因此可以将工件上载到snapshot Maven repo):


您最好将应用程序打包为Docker映像并设置一个。谢谢您的回答,我对Docker有基本的了解,但这是必需的?现在我在nexus和Docker中有两个工件,它是如何与CD(连续交付)一起工作的?感谢您的回答,您解决了我的疑问,现在我正在使用Docker部署spring应用程序,我有一个简单的项目,我有兴趣学习如何在连续交付中正确部署。谢谢大家!
VERSION=`mvn help:evaluate -Dexpression=project.version | grep -v "^\["| grep -v Download`
VERSION=${VERSION/%-SNAPSHOT/} #get rid of -SNAPSHOT if it's there
VERSION="$VERSION-"`date +"%Y%m%d.%H%M%S"`"-$BUILD_NUMBER"
mvn versions:set -DnewVersion=$VERSION