【问题标题】:How do I manage jre/lib/ext jars in a Jenkins/Maven build?如何在 Jenkins/Maven 构建中管理 jre/lib/ext jar?
【发布时间】:2014-02-27 17:34:44
【问题描述】:

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

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

有管理这类事情的最佳实践吗?

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

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

【问题讨论】:

    标签: java maven jenkins dependency-management


    【解决方案1】:

    如果确实需要部署而不是部署到 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(仅当实际构建项目需要扩展时)
    • 将 -Djava.ext.dirs=$WORKSPACE/myextensions 添加到 argLine 以获取安全和故障快速插件

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

    【讨论】:

    • 不,但是一旦构建完成,除非我通过 Jenkins 运行构建,否则我如何获得关于我的集成测试的漂亮图表?
    • @JBristow 在这种情况下,对于解决方案 2),您还必须在 Surefire/Failfast 插件的 argsLine 中包含系统属性。我会更新答案。
    猜你喜欢
    • 2014-07-11
    • 2010-10-31
    • 2020-02-19
    • 2018-05-04
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多