Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-7088

A property which always points to pom.xml own directory

    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 3.6.3
    • Fix Version/s: waiting-for-feedback
    • Component/s: None
    • Labels:
      None

      Description

      Maven docs say that ${project.basedir} points to the directory containing the pom.xml file, but does not say, which pom.xml file. As it turns out in the example below, it can be the file in the directory where mvn is called, and not really the file where the property is used.

      If the problems as the one below cannot be resolved cleanly,  would adding a property, which always points to pom.xml own directory, help?

      I am sorry for the formatting, it is the system which puts new paragraphs and brackets for whatever reason.

      I have a Maven child project in a directory "child". I have also a parent project "local-lib" in the directory "child/local-lib" which contains a repository with jars. The repository is declared in "child/local-lib/pom.xml" as

      <repositories>
        <repository>
          <id>repo</id>
          <url>[file:///$]}}{{{project.basedir}/repo</url>
        </repository>
      </repositories>
      

      The child project has "child/pom.xml" where it refers to its parent as follows:

      <parent>
        <groupId>someGroup</groupId>
        <artifactId>local-lib</artifactId>
        <version>0.0.1</version>
        <relativePath>./local-lib</relativePath>
      </parent>
      

      When I type "mvn clean install" in the child project, that is, in the directory "child", the child project attempts to search for a non-existing repository "child/repo", instead of "child/local-lib/repo". However, replacing "${project.basedir}" in "child/local-lib/pom.xml" with the full path to "child/local-lib" on my disk makes the child project use the correct repository child/local-lib/repo. This in turn, placed in child/local-lib/pom.xml as before, but with additional "local-lib":

      <repositories>
        <repository>
          <id>repo</id>
          <url>[file:///$]{project.basedir}/local-lib/repo</url>
        </repository>
      </repositories>
      

      works this time correctly if I use maven from the directory "child", but not if I use directly "child/local-lib/pom.xml" from "child/local-lib". The latter creates a path with local-lib included twice.

       

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              monkey Monkey
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: