如何使用jenkins在同一个maven反应堆构建中发布npm和maven

如何使用jenkins在同一个maven反应堆构建中发布npm和maven,jenkins,maven-2,npm,build-process,nexus,Jenkins,Maven 2,Npm,Build Process,Nexus,有没有一种方法可以使用一个Maven2反应堆构建pom文件发布到Jenkins作业中的npm和maven存储库?reactor build pom文件包含两个模块,一个是标准jar模块,另一个是pom模块,它使用exec插件调用构建javascript项目的npm脚本目标。Jenkins被配置为在构建成功时将maven依赖项发布到公司nexus服务器 项目布局: project/ pom.xml npm-module/ pom.xml mvn-module/ pom.

有没有一种方法可以使用一个Maven2反应堆构建pom文件发布到Jenkins作业中的npm和maven存储库?reactor build pom文件包含两个模块,一个是标准jar模块,另一个是pom模块,它使用exec插件调用构建javascript项目的npm脚本目标。Jenkins被配置为在构建成功时将maven依赖项发布到公司nexus服务器

项目布局:

project/
  pom.xml
  npm-module/
    pom.xml
  mvn-module/
    pom.xml 
这对于mvn模块和npm模块构建非常有效。但现在的诀窍是发布npm模块。Jenkins似乎只允许一个发布到nexus的后期构建任务


有办法做到这一点吗?谁能解释一下如何设置Jenkins和反应堆构建pom文件,该文件将npm和maven模块发布到nexus?

我有一个答案,但很想听听其他想法

詹金斯设置

  • 创建预步骤“执行shell”以设置npm\u身份验证和电子邮件字段

    npm config set _auth authhashstring  
    npm config set email some@email.com  
    
  • 将部署添加到maven“目标和选项”

  • 添加“文件系统中的设置文件”

注意:使用部署目标而不是jenkins的“将工件部署到maven”post步骤,因为它不使用maven,所以您的npm目标不会被调用

pom.xml
设置

在npm module/pom.xml中,使用前端maven插件并添加执行以安装node/npm和进行npm发布。确保发布已附加到部署阶段。这些都很好。或者,您可以使用exec插件在部署阶段执行
npm publish
命令

在mvn module/pom.xml中,为快照回购位置添加distributionManagement/snapshotRepository

maven
settings.xml
Setup

我们将项目中带有用户名和密码的maven settings.xml放在config目录中,如下所示,mvn module/config/maven-settings.xml。这并不理想,但我认为我们可以用maven/jenkins设置的属性替换用户名和密码。Jenkins将被配置为从此位置读取此文件

package.json
Setup

在npm module/package.json中添加publishConfig/registry条目

"publishConfig": {
    "registry": "url/nexus/content/repositories/npm-snapshots/"
}
Nexus设置

npm快照托管存储库已设置为允许重新部署。这可能不是一个好主意,但对于正在进行的新开发(显然不适用于发行版)来说可能已经足够了,我只是想让堆栈正常工作。我现在需要解决这些问题


因此,撇开这个警告不谈,现在jenkins build将使用顶级多模块reactor pom从一个jenkins作业向各自的存储库发布java和节点模块。

更新:我将exec插件替换为,这使npm、gulp和grunt成为maven中的头等公民,但我仍然不知道如何获得“jenkins publish to maven repositories”后构建步骤也可以发布npm工件。
config/maven-settings.xml  
"publishConfig": {
    "registry": "url/nexus/content/repositories/npm-snapshots/"
}