我有两个用于Java应用程序的服务器,并且正在使用jenkins在这些服务器上部署我的代码。该应用程序是相同的,但是由于工作的性质,我们需要在每个服务器上使用相同版本的自定义jar。

1:我尝试设置环境变量,并尝试在pom.xml中获取工件的工件和组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在评论中提到的,另一个方法是将您的代码分支给不同的客户。

10-05 22:46
查看更多