Skip to content

Coursier ignores overridden properties in child POM #2906

Closed
@ppkarwasz

Description

@ppkarwasz

In the Apache Log4j project we support multiple versions of the same library (in different Maven modules).

In order to do that, in the parent POM we specify the version of the library via a Maven property:

<properties>
  <slf4j.version>2.0.9</slf4j.version>
</properties>
<dependencyManagement>
  <dependencies>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
  </dependencies>
</dependencyManagement>

and we overwrite the property value in the child POM:

<properties>
  <slf4j.version>1.7.25</slf4j.version>
</properties>

This works very well with Maven, since the "inheritance assembly" phase precedes the "model interpolation" phase (cf. Maven Model Builder).

However, as reported by one of our users (cf. apache/logging-log4j2#2065) this doesn't work with Coursier: in the above example Maven with choose version 1.7.25 while Coursier will choose version 2.0.9.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions