适用于多种环境的Maven工件

我正在开发一个项目,该项目使用Maven构建和Artifactory作为构建发布的Maven存储库。 所有工作都很好,只有一组配置 - 创建并创建并发布到Artifactory。

我需要能够为包含环境特定资源(MongoDB连接URL和log4j2 xml)的每个环境创建一个包含必需二进制文件和一个额外工件的WAR。 Jenkins中的部署工作应该将WAR和特定于环境的资源JAR部署到服务器。

我被困在创建和发布工件。 我尝试和拒绝的方法是:

  • Maven配置文件 - 因为它为每个环境创建单独的WAR文件而被拒绝。 我发现创建几十MB的WAR文件只是为了改变一些配置是不合逻辑的。
  • Spring配置文件 - 因为它通过在所有服务器上部署所有配置并依赖环境中的配置文件+代码更改以基于配置的配置文件名称进行读取来使用代码来解决部署问题而被拒绝。
  • Maven资源插件 - 可用于将环境特定资源复制到适当的目录结构中; 但在“部署”阶段不会发布到Artifactory。
  • Maven Jar插件 - 可以创建附加的JAR工件,但附加的工件不能包含资源(或者至少我不知道如何将资源包含在附加的JAR中)
  • Maven构建助手插件 - 可以将单个文件发布为附件,但文件名在部署到Artifactory时会发生更改。
  • 多模块POM - 这种方法可以为每个环境创建资源工件,但有两个缺点:
  • 更新主要工件的版本需要更新为所有POM(容易错过)
  • 不可扩展 - 如果添加新环境,则需要创建单独的POM。
  • 看起来Maven + Artifactory不适用于多环境的情况,因为它似乎没有任何简单的解决方案。 我错过了什么吗? 我应该采取什么方法?

    更新我通过使用https://github.com/khmarbaise/multienv-maven-plugin解决了这个问题。 这让我可以创建一个WAR和多个JAR文件: - myapp.0.1.0.war - myapp.0.1.0-dev.jar - myapp.0.1.0-qa.jar - myapp.0.1.0-prod.jar

    我被困在下一步。 安装阶段将JAR安装为WAR,随后Deploy阶段将其作为WARs上传到Artifactory。 任何将JAR的包装类型保存为JAR的方法?

    链接地址: http://www.djcxy.com/p/79983.html

    上一篇: Maven artifacts for multiple environments

    下一篇: Maven deploy "Release Note" as artifact