【问题标题】:Changing repository layout in Nexus更改 Nexus 中的存储库布局
【发布时间】:2016-06-19 22:56:43
【问题描述】:

我正在将使用 Maven 构建的 Maven 工件部署到 Nexus,并在 Jenkins 中使用以下 Maven 命令进行 Nexus 部署。

org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file

file=abc.ear
groupId=myGroup
artifactId=ModuleA
version=1.0
url=${NEXUS_URL}/dev-repository
repositoryId=dev-repository

我正在部署多个模块,并为三个模块调用上述命令三次。 Nexus 中生成的 repo 结构如下所示 -

myGroup
|
-ModuleA
 |
 -1.0
  |
  -abc.ear
-ModuleB
 |
 -1.0
  |
  -abc.ear
-ModuleC
 |
 -1.0
  |
  -abc.ear

到目前为止,一切都很好。但是,我更喜欢这样的结构 -

myGroup
|
-1.0
 |
 -ModuleA
  -abc.ear
 -ModuleB
  -abc.ear
 -ModuleC
  -abc.ear

我怎样才能做到这一点?我看到 maven-deploy-plugin 的文档指的是“repositoryLayout”。我怎样才能使用它来获得这个特定的文件夹结构?

【问题讨论】:

  • 首先,如果您手动执行部署文件,听起来您做错了什么。因为通常通过 maven 构建,您只需执行以下操作:mvn deploy 就是这样......除此之外,如果您使用 EAR,您通常会有多模块构建,其中包含不同的部分,如 EJB、JAR 或多个 EAR(如果您喜欢的话)也可以通过mvn deploy 部署的单树 ....
  • 感谢您的反馈。这是一个有效的观点,但我们不使用简单的“maven deploy”是有原因的。它超出了问题的范围,因此不想对此线程发表评论。

标签: maven jenkins nexus


【解决方案1】:

据我对 maven 的了解,它是一种标准布局,您无法使用开箱即用的标准 maven 插件对其进行自定义。

Maven 使用 maven2 切换到“默认”存储库布局,而 maven 用于在旧版本的“遗留”布局中部署工件。这两个是开箱即用支持的唯一布局

maven-deploy-plugin legacy layout

Details about difference in legacy and default layout

所以你不能使用标准的 maven 插件来做你想要的。话虽如此,理论上你应该能够通过实现 ArtifactRepositoryLayout 接口来实现。我在这个链接上找到了一些信息:https://kthoms.wordpress.com/2009/10/13/how-to-register-a-custom-maven-repository-layout/

【讨论】:

  • 感谢 Ritesh 的帮助。你似乎给我指出了正确的方向。但是,考虑到实施非标准解决方案的复杂性,我会犹豫走这条路。再次感谢,不过!
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
相关资源
最近更新 更多