How to use a set of jar files in classpath in Jenkins

jenkins classpath groovy
jenkins pipeline classpath
set classpath in jenkins
how to deploy jar file in jenkins
jenkins add external jar
jenkins dependencies
maven classpath
maven test classpath

How to make this possible ?

I had a set of jar files which are to be included to CLASSPATH variable.

I don't want to give the command SET CLASSPATH=xxx.jar;xx.jar;.. as part of the build step.

I dont' want to manually set the Environment variable CLASSPATH as part of system properties.

I tried by copying a set of jar files into Jenkins_HOME/war/WEB-INF/lib and had started the Jenkins server. But couldn't make it possible... Any Solution ?

You can try by additional class-path elements maven. you can see the details in below link 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>

I had a set of jar files which are to be included to CLASSPATH variable. I don't want to give the command SET CLASSPATH=xxx.jar;xx.jar;.. as part of the build  Here CLASSPATH shell variable contain list of Jar file required by your application. Another benefit of using -classpath command line option is that, it enables each and every application to have its own set of JAR in classpath not at all like previous option that is available to all Java program running on same host.

Set CLASSPATH environment as follows and any jar file updated it particular directory

SET CLASSPATH=<your_lib_directory>\*

This will pick up all the updated JAR files

Java Platform ↖ □ “application classpath” (servlet container): java -jar It is possible for two distinct plugins to define a class of the same name, so long as  During application runtime, application class loader will always scan the jar files and classes at specified paths in this variable. To set classpath environment variable, find the location of user variables in your machine and add all paths where Jar files are stored. Use the separator between different two folders, jar files or classes.

I think you are making things harder on yourself than needs be. Why don't you want to set the classpath as a pre-build step? Perhaps because the artifacts change regularly?

My suggestion is that you look into building with Maven and convert your Jenkins job to a Maven job - then you can handle your extra dependencies in the POM and not in Jenkins - which may be a little more elegant.

For example, your JUnit and Selenium dependencies could be included as

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

(the <scope> being important to keep them out of your final artifact) and in the Jenkins job configuration, "Goals and options" could be test package.

Hope that helps.

Cheers,

Inject environment variables using jenkins ? Or only for this case, u can add the "​set CLASSPATH=PATH_GOES_HERE" line in your bat file  If you want to create an executable jar file, you need to configure Maven Archiver accordingly. You need to tell it which main class to use. This is done with the <mainClass> configuration element. Here is a sample pom.xml configured to add the classpath and use the class fully.qualified.MainClass as the main class:

My issue is when i am running this script using command prompt its and that the CLASSPATH correctly contains the WebSphere MQ jar files. Run testng.xml file using Command Prompt Go to the project workspace, create a lib folder inside the project and paste all the selenium executable jar library files. Open the command prompt and go to the project workspace folder. Now, to set the classpath, we need to use the following command given below.

sample code you can use in your Ant build scripts to add all the jar files in a directory tree (typically your lib directory) to define a classpath for  Daniel Spilker added a comment - 2016-01-14 08:19 John Palomo : the classpath should not include any JARs that are already contained in Jenkins core or the Job DSL plugin. So in this case, exclude groovy-all-1.8.9.jar and it should work.

I've tried to specify as Directory using "Additional groovy classpath" and when that didn't work as full path to the Jar file. I also wondered if  Additional classpath : weblogic.jar file path loaded for deployment. If no value is set but the WL_HOME environment variable is found, the plugin will try to load %WL_HOME%/server/lib/weblogic.jar. Depending on the weblogic version the weblogic.jar should be replaced by : for WLS 10.3 /path/to/jar/wlfullclient.jar.

Comments
  • What are the JAR files? Why do you want them on Jenkins' classpath?
  • @wulfgar.pro I need jar files which are required for all the jobs.. Some of them are junit.jar, selenium.jar
  • How have you installed Jenkins? Using the war, or a native binary? If the war, what container are you deploying to?
  • @wulfgar.pro I am directly running the war file as follows .. java -jar jenkins.war
  • Have you tried using the -cp switch when invoking the jvm?
  • I couldn't use maven as it doesn't have internet access & resources are confined to local network i.e. Intranet
  • Maven can run offline and/or you can have your JARs in a localrepository/... in your project.
  • My thought is that, coming future, even if updated the jar file versions, I will just copy the latest jar file into a specific location & restart jenkins, so that the classpath is updated automatically...
  • this does not answer the question