Maven doesn't interpret all properties in some child poms - maven-2

We are working on quite big project with many modules and we use maven 2.2.1 to build it.
We have declared some properties in master pom.xml for having dependency version in one place.
This is how this part of our pom.xml looks like:
<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>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: caoas</name>
<modules>
<module>common</module>
<module>services</module>
<module>datamanagement</module>
</modules>
<properties>
<jslee.version>1.1</jslee.version>
<rhino.version>2.1</rhino.version>
<diameterro.ra.version>2.2.0.1</diameterro.ra.version>
<cdr.ra.version>2.1.1.0</cdr.ra.version>
<cgin.ra.version>1.3.2</cgin.ra.version>
<cgin.oc-common.version>1.3.0</cgin.oc-common.version>
<cgin.in-datatypes.version>5.1.3.2</cgin.in-datatypes.version>
<ra.tracelevel>Finest</ra.tracelevel>
</properties>
...
</project>
We use those properties in few modules and in most of them they are interpreted correctly but there is an issue with one in which only some are interpreted and some are not.
Here's part of that 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>
<groupId>com.blah.as.services</groupId>
<artifactId>moc-sbb</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: services :: MOC-SBB</name>
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
</parent>
<dependencies>
<dependency>
<groupId>opencloud</groupId>
<artifactId>diameter-ro-ra-type</artifactId>
<version>${diameterro.ra.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>oc-common</artifactId>
<version>${cgin.oc-common.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>in-datatypes</artifactId>
<version>${cgin.in-datatypes.version}</version>
<scope>provided</scope>
</dependency>
...
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.ratype</artifactId>
<version>${cgin.ra.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.blah.as</groupId>
<artifactId>correlation-ra-ratype</artifactId>
<version>1.0</version>
<type>jainslee-ratype-jar</type>
</dependency>
</project>
All properties starting with 'cgin' are not interpreted in this pom.xml (the work fine in other modules) other properties are fine.
The whole build has worked perfectly, but recently we had to change modules version, so change affected current module version, parent module version and some dependencies version but those were only local dependencies with version written explicitly.
Have anyone cone across such problem or have any idea where to search for reason fir such situation?
br
Lucja
edit1
I have used mvn -X -U clean install to look more into the build and have found no significant error, the only thig I have found is that in some modules there is expression "properties used" and in some it's not present, the problematic module also doesn't have it. I don't know how it would affect this module, because only some properties are not read and some are.
[DEBUG] properties used {... cgin.oc-common.version=1.3.0, ... cgin.ra.version=1.3.2, ... cdr.ra.version=2.1.1.0, ... diameterro.ra.version=2.2.0.1, ... cgin.in-datatypes.version=5.1.3.2, ...}
edit2
Here's the whole pom.xml for module 'moc'
<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>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services :: MOC</name>
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>services</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>moc-sbb</module>
<module>moc-du</module>
</modules>
</project>
and for module services
<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>com.blah.as.services</groupId>
<artifactId>services</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.0</version>
</parent>
<modules>
<module>moc</module>
<module>ussd</module>
</modules>
</project>
module structure in this case looks like this:
caoas (root)
|
services
|
moc
|
moc-sbb
Here's example for another module in which properties work fine (structure shown from root to leaf node)
<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>com.blah.as.common</groupId>
<artifactId>common</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>lib</module>
<module>ra</module>
<module>utils</module>
<module>patches</module>
</modules>
<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>com.blah.as.common</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: libs</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>common</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>base</module>
<module>tracing</module>
<module>commons</module>
<module>diameter-ro-ext</module>
<module>location-retrieval</module>
<module>normalization</module>
<module>ticketing</module>
<module>profiles</module>
<module>notifications</module>
<module>screening</module>
<module>soap-tools</module>
<module>fsm</module>
<module>xmlbeans</module>
<module>sccp-address-selection</module>
</modules>
<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>com.blah.as.common</groupId>
<artifactId>location-retrieval</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: Location Retrieval</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>location-retrieval-profiles-api</module>
<module>location-retrieval-intf-lib</module>
<module>location-retrieval-sbb-jar</module>
<module>location-retrieval-du</module>
</modules>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval</artifactId>
<version>1.0.1</version>
</parent>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-sbb-jar</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: Common :: Location Retrieval SBB</name>
<dependencies>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>base-api</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-intf-lib</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-profiles-api</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>oc-common</artifactId>
<version>${cgin.oc-common.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>in-datatypes</artifactId>
<version>${cgin.in-datatypes.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common.ratype</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common.events</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.api</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.events</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.ratype</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>base-tracing-intf</artifactId>
<version>1.0.1</version>
<type>jar</type>
</dependency>
</dependencies>
It uses the same properties and here they work fine.

Your services pom refers to com.blah.as.common:caoas:1.0.0 as its parent. In your post, you showed us version 1.0.1, not 1.0.0. Perhaps the property doesn't exist in version 1.0.0?

I always determine dependencies versions in root pom. And not determine versions in child projects. Child projects get dependency versions from parent pom by default.
E. g.
Parent pom:
...
<groupId>ba.server</groupId>
<artifactId>ba-server</artifactId>
<packaging>pom</packaging>
<name>ba-server</name>
<version>0.16.22-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
<version>2.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>proxool</groupId>
<artifactId>proxool </artifactId>
<version>0.8.3</version>
</dependency>
...
Child pom:
...
<parent>
<groupId>ba.server</groupId>
<artifactId>ba-serer</artifactId>
<version>0.16.22-SNAPSHOT</version>
</parent>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>ba-server-kernel</artifactId>
<name>ba-server-kernel</name>
<dependencies>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
</dependency>
...

It looks that your child module refers to a wrong parent POM. In your parent POM you have declared the artifactId as 'caoas':
<artifactId>caoas</artifactId>
But in your child POM you refer to another parent, with artifactId 'moc':
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
</parent>

Related

Status HTTP 404: with a Spring Boot api web service developed with Intellij via remote Tomcat server

I created a spring boot initializer type web service under Intellij.
I can access my api in localhost via the ide server.
Example of api: http://localhost:8088/indicatorMissing/api/listCircuits
But when I create a war package that I deploy in a remote tomcat server, I have the window:
HTTP Status 404 – Not Found
Status Report Type
message /flagMissing/api/listCircuits
description The requested resource is not available.
Apache Tomcat/8.5.14 (Debian).
I tried the addresses:
:8080/missingflag/api/listCircuits
Where
:8080//MissingIndicator/api/listCircuits
Voici mon POM.xml :
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sbvb</groupId>
<artifactId>indicateur_manquant</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>indicateur_manquant</name>
<description>indicateur_manquant</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
Can anybody help me ?
Thank you

Parent Pom get version of Child Pom/dependency

I have a project like the following
mainProject - Multi Module Project structure:
pom.xml
newfolder/pom.xml
otherProject:
otherProject.pom.xml with mainProject.pom.xml as its parent pom and newFolder/pom.xml as a dependency.
see below:
mainProject pom.xml:
<groupId>test.test</groupId>
<artifactId>mainProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>newFolder</module>
</modules>
<dependency>
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
<version>${project.version}</version>
</dependency>
newfolder/pom.xml:
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>test.test</groupId>
<artifactId>mainProject/artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
otherProject:
<parent>
<groupId>test.test</groupId>
<artifactId>mainProject</artifactId>
<version>1.0-SNAPSHOT/version>
</parent>
<dependency>
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
</dependency>
The problem is when I try to build otherProject it cannot find the version of newfolder because it is not pulling in the version of the project that I built it is still looking for newfolder 1.0-SNAPSHOT
Any help would be great!
I was able to get the behavior I was hoping for by adding ${project.parent.version} to the parent pom dependency. example:
<groupId>test.test</groupId>
<artifactId>mainProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>newFolder</module>
</modules>
<dependency>
<groupId>test.test</groupId>
<artifactId>newFolder</artifactId>
<version>${project.parent.version}</version>
</dependency>

RabbitConnectionFactory maven dependency

which dependencies that I need in order to use RabbitConnectionFactory? I have the below pom, but RabbitConnectionFactory cannot be resolved:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test.rabbit</groupId>
<artifactId>connector</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-cloudfoundry-connector</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-spring-service-connector</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-cloudfoundry-connector</artifactId>
</dependency>
</dependencies>
My repo is here:
https://github.com/pkid/rabbitconnectionfac
Thank you for your help in advance!
There is no such class RabbitConnectionFactory.
Where are you seeing an error?
With spring-rabbit, you would generally use its CachingConnetionFactory. It uses an underlying ConnectionFactory from the amqp-client library, which is a transitive dependency.
spring-cloud-service-connector, in RabbitConnectionFactoryCreator creates instances of these objects.

Apache Pig Java UDF - import org.apache.pig.EvalFunc; cannot be resolved

Eclipse is showing the error message import org.apache.pig.EvalFunc; cannot be resolved.How can I get rid of this error ? Below is the POM file
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Pig</groupId>
<artifactId>PigUDF</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>cloudera-repo-releases</id>
<url>https://repository.cloudera.com/artifactory/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
<build>
</build>
</project>
Add pig dependency to your POM file
<dependency>
<groupId>org.apache.pig</groupId>
<artifactId>pig</artifactId>
<version>0.15.0</version><!-- or any version you want -->
</dependency>
EvalFunc class is imported from Pig Packages. So You need to add the pig dependency in pom.xml.
<!-- https://mvnrepository.com/artifact/org.apache.pig/pig -->
<dependency>
<groupId>org.apache.pig</groupId>
<artifactId>pig</artifactId>
<version>0.13.0</version>
</dependency>

Maven configuration error : repo.maven.apache.org

I am trying to create a simple java project using maven.
But I am getting one error in the problems tab with the maven configuration.
The error description is "repo.maven.apache.org"
The error type is "maven configuration" problem.
Can any one help ?
Here is my 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bhawani.sample.maven</groupId>
<artifactId>FirstSimpleSpringProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>FirstSimpleSpringProject</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.0.6.RELEASE</version>
</dependency>
</dependencies>
</project>
In case you have not already tried, try to build your project from command prompt, you will get what exactly you are missing. Additionally, need to verify if provided local repository path has been provided and if you are building it offline/behind company proxy server, add proper proxy setting as well.