Jenkins fails to parse POM with variables - maven

tl;dr: mvn clean install works as expected, but Jenkins is not able to resolve variables in child poms.
We have a project with a main pom and multiple sub poms. It seems to fail in the sub pom with the variable ${project.version} not being resolved (see the error message below and scroll to its end).
Main pom:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<version>1.0.0.0-SNAPSHOT</version>
...
</project>
Sub pom:
<parent>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<version>${project.version}</version>
<relativePath>../pom.xml</relativePath>
</parent>
mvn clean install on the console works flawlessly:
[INFO] Installing /path/to/jenkins/workspace/Project/pom.xml to /path/to/.m2/repository/de/project/1.0.0.0-SNAPSHOT/project-1.0.0.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
...
[INFO] PROJECT 1.0.0.0-SNAPSHOT - EAR project ........... SUCCESS [ 5.038 s]
[INFO] PROJECT 1.0.0.0-SNAPSHOT - Aggregator project ........ SUCCESS [ 0.156 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:03 min
[INFO] Finished at: 2016-09-20T12:58:03+02:00
[INFO] Final Memory: 104M/1088M
[INFO] ------------------------------------------------------------------------
Jenkins fails to parse the pom and produces the following error:
Parsing POMs
ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Failure to transfer my.package:project:pom:${project.version} from http://mynexus.com/content/groups/default was cached in the local repository, resolution will not be reattempted until the update interval of nexus-default has elapsed or updates are forced. Original error: Could not transfer artifact my.package:project:pom:${project.version} from/to nexus-default (http://mynexus.com/content/groups/default): Illegal character in path at index 78: http://mynexus.com/content/groups/default/my/package/project/${project.version}/panda-${project.version}.pom and 'parent.relativePath' points at wrong local POM # line 26, column 10
What has to be changed so that Jenkins can parse the pom file aswell?
The linked question states that maven would not be able to parse the child's properties as they wouldn't exist. The maven logs above show that this is not the case.
The information above is redacted. Typos are not the reason for this issue.

I fixed it by use Freestyle project Job instead of Maven project Job. Run native maven command in shell or locally didn't have this problem.
A similar error:
JENKINS-23846

Related

Maven: local dependency installed not found

This is my project structure:
$ ls
pom.xml
README.md
rep-digital-api
rep-digital-common
So, rep-digital-api has rep-digital-common as dependency.
I first install succesfully rep-digital-common:
mvn -pl rep-digital-common clean package install
The problem appears when I'm trying to tun my rep-digital-api spring-boot service:
mvn clean package -pl rep-digital-api
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building rep-digital-api 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.417 s
[INFO] Finished at: 2018-08-13T15:35:28+02:00
[INFO] Final Memory: 28M/68M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project rep-digital-api: Could not resolve dependencies for project net.gencat.transversal.repositori.digital:rep-digital-api:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at net.gencat.transversal.repositori.digital:rep-digital-common:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for net.gencat.transversal.repositori.digital:rep-digital-common:jar:0.0.1-SNAPSHOT: Could not find artifact net.gencat.transversal.repositori.digital:rep-digital:pom:0.0.1-SNAPSHOT -> [Help 1]
EDIT
Parent pom.xml fragment:
<modules>
<module>rep-digital-common</module>
<module>rep-digital-api</module>
</modules>
I've took a look on my local repositori. The package seems to be installed:
$ ls ~/.m2/repository/net/gencat/transversal/repositori/digital/rep-digital-common/
0.0.1-SNAPSHOT maven-metadata-local.xml
My ~/.m2/settings.xml fragment:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
</settings>
EDIT 2
Parent pom.xml is:
<groupId>net.gencat.transversal.repositori.digital</groupId>
<artifactId>rep-digital</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
I've realized mvn is telling me that parent's pom.xml can't be resolved:
Could not find artifact net.gencat.transversal.repositori.digital:rep-digital:pom:0.0.1-SNAPSHOT

Jenkins: custom jar dependency issue

I'm creating a jar through a project and copied the jar to c:\mylib\test-automation-library-0.0.1-SNAPSHOT.jar
<groupId>com.mycompany.taf</groupId>
<artifactId>test-automation-library</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Test Automation Library</name>
<description>Test Automation Library</description>
<url>http://maven.apache.org</url>
Now, I'm running the test scripts through Jenkins.In the Jenkins job of test scripts, I included the following pre-build step install the library:
install:install-file
-Dfile=c:\mylib\test-automation-library-0.0.1-SNAPSHOT.jar
-DgroupId=com.mycompany.taf
-DartifactId=test-automation-library
-Dversion=0.0.1
-Dpackaging=jar
This installs the jar to maven local repository (where are the scripts are supposed to run) and build is successful in the POM file of the test-scripts, I included the following dependency for the above library:
<dependency>
<groupId>com.mycompany.taf</groupId>
<artifactId>test-automation-library</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
If I do maven install (of the test-scripts project) through Jenkins, I'm hitting the following error:
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for com.mycompany.taf:test-automation-library:jar:0.0.1-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
Is it something wrong with the dependency? I tried the with all different options and also googled it, but was not able to figured out what the problem was. I'm really blocked here. any help/pointers are greatly appreciated.
Thanks in advance.
Rams.
Rams,
Your command reads:
install:install-file
-Dfile=c:\mylib\test-automation-library-0.0.1-SNAPSHOT.jar
-DgroupId=com.mycompany.taf
-DartifactId=test-automation-library
-Dversion=0.0.1
-Dpackaging=jar
Your version number is missing the -SNAPSHOT qualifier.
Hope that helps.
#333kenshin, this is continuation to my previous comment to your question.
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) # test-automation-library ---
[INFO] Installing C:\Program Files (x86)\Jenkins\workspace\AmzonPOCTest1\test-automation- library\target\test-automation-library-0.0.1-SNAPSHOT.jar to C:\Windows\system32\config\systemprofile\.m2\repository\com\mycompany\taf\test-automation-library\0.0.1-SNAPSHOT\test-automation-library-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.938 s
[INFO] Finished at: 2014-10-23T03:38:39-07:00`enter code here`
[INFO] Final Memory: 23M/122M
[INFO] ------------------------------------------------------------------------ enter code here
FYI: I logged into my windows PC non-admin user. I believe it does not matter.

Maven Could not resolve dependencies for hadoop project

I wanted to build the sample projects from hadoop book but I got "Could not resolve dependencies error".
Here is my Error during build:
[INFO] Building Chapter 2: MapReduce 3.0
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.apache.hadoop:hadoop-core:jar:0.23.10 is missing, no dependency information available
[WARNING] The POM for org.apache.hadoop:hadoop-test:jar:0.23.10 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Chapter 2: MapReduce .............................. FAILURE [1.409s]
[INFO] Hadoop: The Definitive Guide, Example Code ........ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.819s
[INFO] Finished at: Wed May 14 12:19:14 EEST 2014
[INFO] Final Memory: 6M/67M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project ch02: Could not resolve dependencies for project com.hadoopbook:ch02:jar:3.0: The following artifacts could not be resolved: org.apache.hadoop:hadoop-core:jar:0.23.10, org.apache.hadoop:hadoop-test:jar:0.23.10: Failure to find org.apache.hadoop:hadoop-core:jar:0.23.10 in https://repository.apache.org/content/repositories/releases/ was cached in the local repository, resolution will not be reattempted until the update interval of apache.releases has elapsed or updates are forced -> [Help 1]
and here is my pom.xml for ch02 project
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hadoopbook</groupId>
<artifactId>hadoop-meta</artifactId>
<version>3.0</version>
<relativePath>../hadoop-meta/pom.xml</relativePath>
</parent>
<groupId>com.hadoopbook</groupId>
<artifactId>ch02</artifactId>
<packaging>jar</packaging>
<version>3.0</version>
<name>Chapter 2: MapReduce</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
</dependency>
</dependencies>
</project>
Any idea how can I build this code using maven and what the problem is ?
Thanks
What's happening is that Maven can't find the what it is looking for in the remote repository. So when it reaches out to Apache's Maven repository it's just not finding the resources for version 0.23.10 hadoop-test.
Particularly line #8 of the pom file in the question <relativePath>../hadoop-meta/pom.xml</relativePath> is directing Maven to look at hadoop-meta/pom.xml. On line #48 through #50 you'll see the specification for the hadoop-test repository:
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
<version>${hadoop.version}</version>
That ${hadoop.version} is the value that you specify in your maven command, ie 0.23.10.
So then maven goes out to the Apache repo and looks for hadoop-test v0.23.10, which isn't present. So then Maven falls over.
Now if you used a version that is present in the hadoop-test, or if you altered the pom files so that hadoop-test isn't a dependency.
I had this problem as well, it turned out it was because of NetBeans adding something to my pom.xml file. Double check nothing was added since previous successful deployments.

Redeploy existing Nexus artifact to Weblogic

I have a Hudson build job that builds a Maven project, and redeploys the resulting artifact to Nexus and to a remote Weblogic instance for testing. I'm trying to create a separate job that would deploy the same artifact to another Weblogic instance, but to do so without recompiling the project and making a new WAR. The rationale here is, the bits already exist and were tested in the development environment, and only if that passes can they be promoted to the development-integration environment. Is this possible?
So far, I have tried:
1) using the existing POM and on the command line and declaring mvn deploy wls:undeploy wls:deploy - This deploys the project WAR to the new environment but also builds the project from scratch. The deploy goal also replaces the previously built project artifact (a snapshot) in Nexus, which makes sense.
2) Tried creating a new POM where the artifact from the previous build is a dependency, and the wls-maven-plugin is the only plugin declared. Running mvn wls:deploy here also fails, for different reasons.
Is there a way to perform such a deployment in a concise manner that I'm missing? Am I using the wrong mechanism (Maven) for this? Should I be using a more procedure based language like Ant? Any insight would be greatly appreciated. (Also if more information is required, please let me know!)
Edit: The redeployment succeeds if the built artifact is locally available in the target directory, and that location is referenced by the properties file. According to the documentation on Oracle's website that parameter can either be local or GAV coordinates. If I use GAV coordinates to pull the artifact directly from Nexus and then push it out to the remote Weblogic, I get the following Maven error:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MyWebApp 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- wls-maven-plugin:12.1.1.0:redeploy (default-cli) # MyWebApp-deploy-DIT ---
[INFO] ++====================================================================++
[INFO] ++ wls-maven-plugin: redeploy ++
[INFO] ++====================================================================++
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.480s
[INFO] Finished at: Wed Mar 20 10:19:22 EDT 2013
[INFO] Final Memory: 4M/122M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.oracle.weblogic:wls-maven-plugin:12.1.1.0:redeploy (default-cli) on project MyWebApp-deploy-DIT: Invalid file. Please provide an existing fully qualified path of the file. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
For completeness, I'm also posting the POM I'm using to perform option #2:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>MyWebApp</name>
<parent>
<groupId>org.myorg.maven</groupId>
<artifactId>MyOrg-Parent</artifactId>
<version>2.0</version>
</parent>
<groupId>org.myorg.apps</groupId>
<artifactId>MyWebApp-deploy-DIT</artifactId>
<version>0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<drools.version>5.4.0.Final</drools.version>
<REGION>DEV</REGION>
<MyWebApp_LOGDIR>.</MyWebApp_LOGDIR>
<webapp.jsp.dir>src/main/webapp/WEB-INF/jsp</webapp.jsp.dir>
<buildMsgJsp>buildMsg.jsp</buildMsgJsp>
<DEPLOYMENT_NAME>MyWebApp</DEPLOYMENT_NAME>
<MIDDLEWARE_HOME>/ci/oracle/middleware</MIDDLEWARE_HOME>
<WLS_ADMIN_HOST>lncibd008</WLS_ADMIN_HOST>
<WLS_PORT>7001</WLS_PORT>
<STAGE>true</STAGE>
<!--<SOURCE>${project.build.directory}/MyWebApp-3.7-SNAPSHOT.war</SOURCE>-->
<SOURCE>org.myorg.apps:MyWebApp:war:3.7-SNAPSHOT</SOURCE>
<WLS_TARGETS>server1</WLS_TARGETS>
</properties>
<dependencies>
<dependency>
<groupId>org.myorg.apps</groupId>
<artifactId>MyWebApp</artifactId>
<version>3.7-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>wls-maven-plugin</artifactId>
<version>12.1.1.0</version>
<configuration>
<weblogicHome>wlserver_12.1</weblogicHome>
<upload>true</upload>
<remote>true</remote>
<stage>${STAGE}</stage>
<verbose>true</verbose>
<userConfigFile>wlsconfig/${WLS_ADMIN_HOST}${WLS_PORT}.config</userConfigFile>
<userKeyFile>wlsconfig/${WLS_ADMIN_HOST}${WLS_PORT}.key</userKeyFile>
<adminurl>http://${WLS_ADMIN_HOST}:${WLS_PORT}</adminurl>
<targets>${WLS_TARGETS}</targets>
<source>${SOURCE}</source>-->
<name>${DEPLOYMENT_NAME}</name>
<middlewareHome>C:\Oracle\Middleware</middlewareHome>
</configuration>
</plugin>
</plugins>
</build>
</project>
As you can see I have a commented-out and a GAV . Local one succeeds, GAV fails with the above error.

maven can't find archetype in my repository

I'm trying to create my own maven archetype. For now, I'm going through this tutorial [here][1] without success. I'm able to build the archetype project okay, but when I try to generate a project from that archetype I get the error below. Maven can't seem to find the archetype I created. Can any one spot my problem? Is there some other recomended tutorial for createing a maven archetype? Thanks.
Maven version 3.0.3
Build Error:
AR3Y35-LAPTOP:EclipseWS Albert$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeGroupId=com.myarch.archetypes -DarchetypeArtifactId=component-archetype -DinteractiveMode=false
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.0:generate (default-cli) # standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.0:generate (default-cli) # standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.0:generate (default-cli) # standalone-pom ---
[INFO] Generating project in Batch mode
[WARNING] Specified archetype not found.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.389s
[INFO] Finished at: Fri Sep 23 02:33:55 PDT 2011
[INFO] Final Memory: 7M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.0:generate (default-cli) on project standalone-pom: The desired archetype does not exist (com.myarch.archetypes:component-archetype:1.0) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
AR3Y35-LAPTOP:EclipseWS Albert$
prototype pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.myarch.templates</groupId>
<artifactId>component-template</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<name>${group}</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
archetype.xml
<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd">
<id>component-archetype</id>
<sources>
<source>src/main/java/App.java</source>
</sources>
<testSources>
<source>src/test/java/AppTest.java</source>
</testSources>
<allowPartial>true</allowPartial>
</archetype>
For using a customized archetype, there has to be an entry made in the archetype-catalog.xml file which resides in the .m2/repository/archetype-catalog.xml in your home directory. For doing so, you need to install the archetype by using the following command:
mvn install archetype:update-local-catalog
After that, you will be able to use your new archetype while creating a new Maven project with the mvn archetype:generate command.
I needed to include -DarchetypeVersion={my.archetype.version} in the mvn archetpe:generate command
In my case the problem was that:
- update-local-catalog goal created file ~/.m2/repository/archetype-catalog.xml
- generate goal searches for file ~/.m2/archetype-catalog.xml
copying the file was a workaround. Not sure how I've fixed this. Sure now with maven 3.5.4 everything is ok.
It's telling you :
[WARNING] Specified archetype not found.
Did you install your archetype with
mvn install
before trying to use it ?
Executing the mvn install resolves the problem, after executing that from idea the problem got resolved.
From my own experience, You have to search for your groupId is accessible in the below link or not
http://repo.maven.apache.org/maven2/archetype-catalog.xml
I found out I had typo error then I've got error.

Resources