Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
在不重建的情况下部署maven工件_Maven_Jenkins Pipeline - Fatal编程技术网

在不重建的情况下部署maven工件

在不重建的情况下部署maven工件,maven,jenkins-pipeline,Maven,Jenkins Pipeline,我们正在使用声明性管道,最新的Jenkins。构建在docker从属容器中执行,该容器包含maven和其他工具。我们当前的Jenkins文件类似于此: stage('build') { steps { sh 'mvn clean install'} } stage('test') { /* functional tests using a different tool */ } stage('publish') { steps { // mvn clean deploy -

我们正在使用声明性管道,最新的Jenkins。构建在docker从属容器中执行,该容器包含maven和其他工具。我们当前的Jenkins文件类似于此:

stage('build') { steps { sh 'mvn clean install'} }
stage('test') { /* functional tests using a different tool */ }
stage('publish') { 
    steps {
      // mvn clean deploy -DskipTests -DaltDeploymentRepository... (rebuilds, which we want to avoid, as its a multimodule project)
      // withMaven(options:[artifactsPublisher()] { } ... (from maven-pipeline-plugin)
    }
}

Jenkins classic mode有一个Maven集成插件,该插件提供了一个“将工件部署到Maven存储库”部分,该部分使用Maven重新部署Publisher仅发布工件。我正在寻找一个类似的管道,我认为maven管道插件可以做到这一点,但找不到一个例子。感谢任何指点

我无意中发现你的问题是在寻找同样的东西,而对我有效的是:

stage('Deploy') {
    sh "'${mvnHome}/bin/mvn' war:war deploy:deploy"
}

当然,您需要将war:war更改为要部署的工件的类型(因此
jar:jar
ear:ear
)。我发现这是基于,但它似乎与
maven-war-plugin
以及
maven-jar-plugin
有关,尽管在
war
目标中没有选项。

您面临的问题是,在使用
deploy
的情况下,maven生命周期会运行所有步骤,其中包括
安装
阶段……问题是您正在使用哪种工具进行功能测试?为什么不使用Maven的集成测试阶段?@khmarbaise是的,安装阶段是我们想要避免的。功能测试也是基于mvn的,但由于其他原因,必须独立于编译运行。@vasya10您解决了问题吗?@filip不是我们想要的方式。我们继续使用mvn clean deploy命令并跳过测试,是的,它会重新生成,但会正确发布?您将如何部署(不重建)多模块项目的所有工件(JAR、zip等)?恐怕这不适用于多模块项目。我的建议是在
mvn干净安装
之后使用
mvn部署-DskipTests
(无
clean
阶段)。