java - 如何在 Jenkins/Maven 构建中管理 jre/lib/ext jar?

标签 java maven jenkins dependency-management

我正在尝试在 Jenkins 盒子上为我的团队建立一个构建。他们使用的产品的文档说要在 $JAVA_HOME/jre/lib/ext 目录中放置 2 个 jar 文件和一个 .properties 文件。

由于这个 Jenkins build box 由另一个团队管理并且包含许多构建,我觉得告诉他们将这些文件安装在可能构建这个项目的所有从属上是一个坏主意。 (特别是如果我们需要升级/更改设置等)

是否有管理此类事情的最佳实践?

到目前为止我尝试过的事情:

  • 将它安装在 $JAVA_HOME/jre/lib/ext == 中。
  • 在 maven 存储库中安装 jar 文件并将属性文件放入 src/main/resources == 不起作用(它在 $M2_REPO/PATH/TO/JAR/jarname.properties 中查找)

最佳答案

如果确实需要部署到 lib/ext 中,最简单的方法是为您的构建提供自定义 jdk(称为 Java6_With_MyProduct),在其中提供压缩/tar'gz'ed 的 jdk。

请您的管理员将其包含在 Jenkins 配置中。

这样,您的(并且只有您的构建)将获得扩展的 jdk。

或者,您可以使用 -Djava.ext.dirs 系统属性来覆盖扩展目录。那样的话,你会

  • 作为预构建步骤将您的扩展复制到您的工作区
  • 将原始扩展从 $JAVA_HOME/jre/lib/ext 复制到同一目录
  • 将 -Djava.ext.dirs=$WORKSPACE/myextensions 设置为 MAVEN_OPTS(仅当实际构建项目需要扩展时)
  • 为 surefire 和 failfast 插件添加 -Djava.ext.dirs=$WORKSPACE/myextensions 到 argLine

悬而未决的问题是:您真的需要这些扩展来构建您的项目吗?

关于java - 如何在 Jenkins/Maven 构建中管理 jre/lib/ext jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076027/

相关文章:

java - 如何为 Apache Maven Infoker 插件创建和放置 BeanShell 脚本?

shell - Jenkins:如何在 Windows 从站中执行 shell 脚本

java - 如何使用 SpringAmqp 设置 RabbitMQ 策略

java - 如何按点获取 map 中的值?

java - 构造函数可以像java中的方法一样返回数据类型吗?

maven - Jenkins Cobertura 插件找不到coverage.xml 文件

java - 如何通过Gradle在Java中使用其他项目的库

java - 关闭在另一个 JFrame 中打开的 JFrame

jenkins - 读取 secret 文本文件的输出

java - 在多分支管道中调用作业