【问题标题】:How to use a set of jar files in classpath in Jenkins如何在 Jenkins 的类路径中使用一组 jar 文件
【发布时间】:2012-11-10 15:08:14
【问题描述】:

如何做到这一点?

我有一组要包含在 CLASSPATH 变量中的 jar 文件。

我不想在构建步骤中给出命令SET CLASSPATH=xxx.jar;xx.jar;..

我不想手动将环境变量 CLASSPATH 设置为系统属性的一部分。

我尝试将一组 jar 文件复制到 Jenkins_HOME/war/WEB-INF/lib 并启动了 Jenkins 服务器。但不能让它成为可能......任何解决方案?

【问题讨论】:

  • 什么是 JAR 文件?为什么要将它们放在 Jenkins 的类路径中?
  • @wulfgar.pro 我需要所有作业都需要的 jar 文件。其中一些是 junit.jar、selenium.jar
  • 你是如何安装 Jenkins 的?使用战争,还是原生二进制文件?如果是战争,您将部署到哪个容器?
  • @wulfgar.pro 我直接运行war文件如下.. java -jar jenkins.war
  • 在调用 jvm 时是否尝试过使用 -cp 开关?

标签: java jenkins build-automation


【解决方案1】:

我认为你让自己变得比需要的更难。为什么不想将类路径设置为预构建步骤?也许是因为工件经常变化?

我的建议是您考虑使用 Maven 构建并将您的 Jenkins 作业转换为 Maven 作业 - 然后您可以在 POM 中而不是在 Jenkins 中处理您的额外依赖项 - 这可能会更优雅一些。

例如,您的 JUnit 和 Selenium 依赖项可以包含为

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency>
    ... etc

&lt;scope&gt; 对将它们排除在您的最终工件之外很重要)并且在 Jenkins 作业配置中,“目标和选项”可以是 test package

希望对您有所帮助。

干杯,

【讨论】:

  • 我无法使用 maven,因为它没有 Internet 访问权限,资源仅限于本地网络,即 Intranet
  • Maven 可以离线运行和/或您可以将 JAR 放在项目的 localrepository/... 中。
  • 我的想法是,在未来,即使更新了 jar 文件版本,我也只会将最新的 jar 文件复制到特定位置并重新启动 jenkins,以便自动更新类路径......
  • 这没有回答问题
【解决方案2】:

您可以尝试通过附加的类路径元素 maven。您可以在下面的链接中查看详细信息 https://maven.apache.org/surefire/maven-surefire-plugin/examples/configuring-classpath.html

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
      <additionalClasspathElements>
        <additionalClasspathElement>path/to/additional/resources</additionalClasspathElement>
        <additionalClasspathElement>path/to/additional/jar</additionalClasspathElement>
        <additionalClasspathElement>path/to/csv/jar1, path/to/csv/jar2</additionalClasspathElement>
      </additionalClasspathElements>
    </configuration>
  </plugin>
</plugins>

【讨论】:

    【解决方案3】:

    如下设置 CLASSPATH 环境,任何 jar 文件都会更新它的特定目录

    SET CLASSPATH=&lt;your_lib_directory&gt;\*

    这将获取所有更新的 JAR 文件

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多