Jenkins Maven Build Step fails but runs from command line - maven

I've been searching the web and StackOverflow for a solution. Problem is that Jenkins will not invoke mvn from the the build step. In my build step, I'm using Invoke top-level Maven targets. From the command line mvn clean install runs just fine from the directory where the POM file is located. So I believe Maven is installed correctly.
From the console I see:
[XXXX] $ cmd.exe /C "mvn -f C:\Users\XXX\XXX\XXX\pom.xml clean install && exit %%ERRORLEVEL%%"
Error message is:
'mvn' is not recognized as an internal or external command, operable program or batch file.
What I have tried:
change the settings file option to point too the settings.xml in the Maven install folder
change the global setting file option to point too the settings.xml in the Maven install folder
I've set the MAVEN_HOME environment variable in Jenkins Configure System
What I expect to happen:
Maven to build my project from the build step.

I just removed pom.xml file from the path.. it's worked ..
So try the below option

Related

Jenkins Karate pipeline project could not execute maven goal

Error message from the Jenkins console:
The goal you specified requires a project to execute but there is no
POM in this directory
(/home/jenkins/workspace/Dealer-API-v2-test-automation_qa). Please
verify you invoked Maven from the correct directory.
Maven command in the Jenkins file:
sh script : "mvn test '-Dkarate.options=--tags #regression' -Dtest=TestParallel -DargLine='-Dkarate.env=qa'"
How can I execute this maven command in my pipeline script?
Just a guess but if you add -f Dealer-API-v2-test-automation_qa/pom.xml or something like that, it may start working. Or do a cd Dealer-API-v2-test-automation_qa, before doing mvn test, hope that helps.

'mvn' is not recognized as an internal or external command even after I set Maven home and configure Jenkins Maven Installer?

I set the environment variables:
Added it to my Path:
Set up Maven path in Jenkins:
And still the following error is thrown when I try to build:
[JenkinsExercise] $ cmd.exe /C "mvn install && exit %%ERRORLEVEL%%"
'mvn' is not recognized as an internal or external command,
operable program or batch file.
Build step 'Invoke top-level Maven targets' marked build as failure
Finished: FAILURE
Proof that Maven is installed succesfully:
What is the issue?
I had to add Maven_path to my Project Settings > Modules > Maven path.

After configuring Maven in Global tools of Jenkins, build step fails with error mvn not found

In Jenkins, I have configured Maven under Configure Global tools.
Next, created a FreeStyle job and in the build step with execute shell. When I write mvn -v, the build fails with error mvn not found. But when I do the same exercise with JAVA_HOME, java -version , prints the correct version.
To resolve the issue, I added a env variable under ( Manage Jenkins -> Configure System -> ENV Variable). Added a new variable M2_HOME with value ( maven home on Jenkins machine) and in the execute shell build step added a line PATH=$PATH:$M2_HOME/bin.
I am not sure if this is the best practice.

Maven build in Jenkins writes the output of execution to a file

I have a Maven build job in Jenkins and in the "Build" section, I have given Maven Version and Root POM and in the "Goals and Options" filed, I am executing the pom with customized goals. I need to write the output of the execution to a file, I tried below
clean install -Dmaven.test.skip=true -nsu -l output.log
clean install -Dmaven.test.skip=true -nsu -DoutputFile=output.log
clean install -Dmaven.test.skip=true -nsu -Doutput=output.log
Nothing works for me. Could anyone please help in either the above way or any other option available to direct the output log to a file?
According to mvn -help, the following works for me:
clean install -l output.log
The file is stored to the job workspace, if you want to publish it as an artifact, you need to add a Publish artifact or Publish document post-step (or Publish document post-build option in Maven project).

Copy file after successful build using maven

I'm using mvn install to build the .hpi to my plugin for Jenkins. This puts a .hpi in the target folder.
What I would like to do is if the build is successful, copy the hpi-file to a specific folder. Is it possible to do both these task with one Maven command using only the terminal/command prompt?
edit
My POM can be seen here.
https://github.com/MarkusDNC/plot-plugin/blob/master/pom.xml
There is now way to copy file through MVN CMD.
After that being said - You have 2 options:
1.) using a simple shell/batch step to copy.
2.) You need to Add another build step for maven but you will also need a new pom.xml file and use maven-antrun-plugin

Resources