java - 通过jenkings在不同服务器上部署相同jar的两个不同版本

标签 java maven jakarta-ee jenkins continuous-integration

我的 java 应用程序有两台服务器,我使用 jenkins 在这些服务器上部署我的代码。应用程序是相同的,但由于我们所做的工作性质,我们需要在每台服务器上使用不同版本的相同自定义 jar。

1:我尝试设置环境变量并尝试获取 pom.xml 中的 Artifact 和组 ID,但我们无法访问 pom.xml 中的环境变量

2:我尝试更改它们的名称并导入两个 jar,但这太疯狂了,其中一个被忽略,并且两台服务器仅使用一个版本。

我已经为此苦苦挣扎了很长一段时间,我想到的唯一可能的解决方案是我创建两个不同的 git 存储库并为每个服务器创建不同的 jenkin 作业。

任何人都可以帮我弄清楚如何在不同的服务器上导入不同的版本,这意味着很多。提前致谢。

最佳答案

如果我理解正确的话,

different versions of some custom jars

是您的依赖项的不同版本。这可以使用 Maven 配置文件轻松实现。您的 pom.xml 看起来与此类似(XML 被简化到最小。

 <project>
   <!-- Basic info like model,  artifact, group etc. -->
   <dependencies>
      <!-- Your usual deps as you are used to -->
   </dependencies>
   <profiles>
     <profile>
         <id>profile1</id>
         <dependencies>
              <!-- Extra deps for this profile -->
         </dependencies>
     </profile>
     <profile>
         <id>profile2</id>
         <dependencies>
              <!-- Extra deps for this profile -->
         </dependencies>
     </profile>
   </profiles>
 </project>

IDE通常提供设置配置文件的方法,因此开发人员应该不会有问题。从 Jenkins ,在从命令行构建时,您将使用给定的配置文件调用命令。您可以拥有单独的作业,也可以使用参数创建作业。

mvn install -P profile1

或者,可以通过 enviroment variable 激活配置文件。问题可能是该变量在编译期间必须可用。

另一种方法是为不同的客户分支代码,正如 Abhilas 在评论中提到的那样。

关于java - 通过jenkings在不同服务器上部署相同jar的两个不同版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43561354/

相关文章:

java - RestAssured - JsonPath 根据给定的过滤条件从对象数组中过滤匹配对象的属性

java - 使用文件存在忽略我的 Maven 配置文件中的激活(配置文件始终执行)

java - 关于 mongodb for Java 的 ORM 工具/框架

java - 我的 Maven 安装应该可以工作,但是却不能

java - Seam - 多个持久性单元

servlets - 使用 Scriptlet 访问 Get 参数

java - log4.xml 中用于访问 java 系统属性的表达式语言是什么?

java - 为什么 Eclipse 将我的整个项目导出为可运行的 JAR 文件?

java - 通知 postgres 对 java 应用程序的更改

java - 如何进行Wildfly 9解压部署WAR文件?