maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael <mlgir...@gmail.com>
Subject Property interpolation in child pom
Date Thu, 11 Aug 2016 04:58:48 GMT
I wish to define the distributionManagement values for all my projects in a common parent pom.

parent pom.xml

   <url>${site.url}</url>

   <properties>
      <site.base.url>file:///Users/macuser/Sites</site.base.url>
      <site.url>${site.base.url}/${project.artifactId}</site.url>
   </properties>
   
   <distributionManagement>
      <site>
         <id>local</id>
         <url>${site.url}</url>
      </site>
   </distributionManagement>


The effective pom for this is as expected:

  <url>file:///Users/macuser/Sites/parent-pom</url>
  <distributionManagement>
    <site>
      <id>local</id>
      <url>file:///Users/macuser/Sites/parent-pom</url>
    </site>
  </distributionManagement>
  <properties>
    <site.base.url>file:///Users/macuser/Sites</site.base.url>
    <site.url>file:///Users/macuser/Sites/parent-pom</site.url>
  </properties>


In child pom, I specify the parent pom only, no other elements.  I expect the distributionManagement
to inherit from the parent.

<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>mlgiroux</groupId>
    <artifactId>parent-pom</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath></relativePath>
  </parent>
  <artifactId>parent-pom-test</artifactId>
  <packaging>pom</packaging>
</project>

The effective pom is strange:

  <url>file:///Users/macuser/Sites/parent-pom-test/parent-pom-test</url>
  <distributionManagement>
    <site>
      <id>local</id>
      <url>file:///Users/macuser/Sites/parent-pom-test/parent-pom-test</url>
    </site>
  </distributionManagement>
  <properties>
    <site.base.url>file:///Users/macuser/Sites</site.base.url>
    <site.url>file:///Users/macuser/Sites/parent-pom-test</site.url>
  </properties>

The site.url property has been resolved as I expected, but the <url> elements for project.url
and distributionManagement.site.url that were defined in the parent as ${site.url} have the
artifactId twice.  As if I had specified ${site.base.url}/${project.artifactId}/${project.artifactId}

Now, if I add the url and distributionManagement to the child pom as:
   <url>${site.url}</url>

   <distributionManagement>
      <site>
         <id>local</id>
         <url>${site.url}</url>
      </site>
   </distributionManagement>


The effective pom is exactly as I expect with the artifactId specified exactly once in the
effective values.

  <url>file:///Users/macuser/Sites/parent-pom-test</url>
  <distributionManagement>
    <site>
      <id>local</id>
      <url>file:///Users/macuser/Sites/parent-pom-test</url>
    </site>
  </distributionManagement>


I think it is important to point out that the child is NOT a sub module of the parent.  It
specifies a parent, but it is itself a root module.

This feels like a defect to me.

Michael Giroux


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message