Jenkins ERROR: Failed to parse POMs : java.io.IOException: remote file operation failed: Caused by: java.lang.NoClassDefFoundError:

Hi all,

I have recently faced a peculiar error with my Jenkins+Selenium Integration.The scripts which were running fine for many weeks suddenly started failing.The scripts would not even get invoked.

Initially before invocation of the scripts I got a failed to parse POM error. How could that happen when I have’nt changed the setup at all myself??

This was the error I saw in the Jenkins console logs :-

parsing pom error-Jenkins

Anyhow after reading a few Stack overflow posts, I got a few clues that it must be somewhere related to the default Maven installations done by Jenkins in the respective slaves.

In the Jenkins slave default path I saw there are few jars/ packages that Jenkins configures/copied on to the slave :-

Temp Maven Files copied on to Jenkins Slave

The tools folder contains the following Maven Package :-

Temp Maven Files copied on to Jenkins Slave- inside Tools Folder

I deleted the 3 jars(maven3-interceptor-commons.jar, maven31-agent.jar, maven31-interceptor.jar) and the complete ‘tools’ folder and once again re-run my automation job.

And… Voila!! The scripts were invoked fine once again! 🙂 All those files were again copied fresh to the Jenkins Slave once again.

So it looks like maybe one of the Maven jars got corrupted for some reason and were breaking the execution. The reason this could have happened is still hazy to me. But atleast we have a solution for it :).

Let me know if you come across such an error and if you were able to resolve it with this post.

Regards,

VJ

Advertisements

Selenium Scripts Integration with Jenkins

So this is my first tech blog!….haha…. Fingers crossed…. Here we go!

****************************************************************************************************************************************

There are many ways to trigger Selenium automation scripts which are collated into a test-suite. The method I have employed is as follows :-

1.’Mavenise the Project’ – I created a new Maven Project in my eclipse setup and copied all my automation scripts into the src/test/java/.

2.I create a ‘testng.xml‘ file which consists of the various tests I want to run as part of the test suite.

3.I resolve all the dependencies on my Maven Project using ‘mvn dependency:tree’.

4.In the pom.xml file , I give the name of this xml file.

5.I also enter various plugins needed for execution,report generation etc in the pom.xml file.

6.One such plugin is the maven-site-plugin. For more info goto http://maven.apache.org/plugins/maven-site-plugin/

7.Another plugin I use is the maven-surefire-plugin.  For more info goto http://maven.apache.org/surefire/maven-surefire-plugin/

8.Finally to run the test-suite I run the ‘mvn site’ command from the folder root directory.

9.The test-suite gets executed and the surefire report is generated in **/target/site/surefire-report.html

There are other ways of running test-suites as well like ant scripts etc, but I personally find this the easiest way to trigger a test automation suite and get a nice meaning report at the end of it! The surefire-report.html generated in the target/site folder is awesome!

Now if you want to run this test-suite as a part of a Continous Integration process using Jenkins you can do the following :-

1.Create a new Jenkins job (Select Maven Project).

2.Give the destination of the pom.xml file ( relative to the node root).

3.In the goals section enter ‘site’.

4.On building the project, you have your automation scripts running.

5.Next step is to append the surefire-report into the main Jenkins notification email.

All the best with whatever IT is that you are doing ( which redirected you here 🙂 )

Regards,

VJ