Maven Changelog Plugin
  1. Maven Changelog Plugin
  2. MCHANGELOG-84

wrong SVN directory path created when using cascaded pom modules(?)

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Not A Bug
    • Affects Version/s: 2.1
    • Fix Version/s: None
    • Labels:
      None
    • Environment:
      java 1.5.0_13 / mac os x / maven 2.0.7
    • Number of attachments :
      0

      Description

      When executing "site" the plugin accesses a wrong svn path (see log below).

      the pom look similar to this (well, I simplified it a bit

      root.pom
      ------------

      <project>
         ...
          <modules>
               ...
              <module>configuration</module>
               ...
          </modules>
          ....
      </project>
      

      pom (in directory configuration)
      ------------------------------------------

      <project>
         <parent> ... root.pom ... </parent>
          ....
          <modelVersion>4.0.0</modelVersion>
          <groupId>my.group.configuration</groupId>
          <artifactId>PREFIX-configuration</artifactId>
          <packaging>jar</packaging>
          ....
      </project>
      

      directory layout:

      <directory trunk>
      `----  root-pom
      `---- <directory configuration>
              `----  sub-module-pom             this file defines the artifact "PREFIX-configuration.jar" 
      

      [INFO] Generating "Change Log" report.
      [INFO] Generating changed sets xml to: /******/trunk/configuration/target/changelog.xml
      [INFO] Executing: svn --username **** --password ***** --non-interactive log -v -r "

      {2008-03-24 13:32:56 +0000}

      :

      {2008-04-24 13:32:56 +0000}

      " https://***/svn/***/trunk/PREFIX-configuration
      [INFO] Working directory: /****/trunk/configuration
      [ERROR] Provider message:
      [ERROR] The svn command failed.
      [ERROR] Command output:
      [ERROR] svn: REPORT request failed on '/svn/!svn/bc/461/***/trunk/PREFIX-configuration'
      svn: '/svn/!svn/bc/461/****/trunk/PREFIX-configuration' path not found

      "PREFIX-configuration" is the artifact name in the "sub-module" pom not a directory. The root pom access this child pom via the module element "configuration" which is identical to the directory in the file system and the svn repository. So correctly the svn command should look like

      "https://***/svn/***/trunk/configuration"

      and not

      "https://***/svn/***/trunk/PREFIX-configuration"

      .
      In case I understand the error message correctly the plugin tries to read a directory which is named like the artifact-id which is wrong here?

        Activity

        Hide
        Dennis Lundberg added a comment -

        A project doesn't inherit from an aggregator project - it inherits from a parent project. The aggregator merely triggers the build of a bunch of projects simultaneously.

        Show
        Dennis Lundberg added a comment - A project doesn't inherit from an aggregator project - it inherits from a parent project. The aggregator merely triggers the build of a bunch of projects simultaneously.
        Hide
        Rintcius Blok added a comment -

        I expected the SVN path to be in line with the one that is by default used in the release plugin (if I don't specify a scm element in the child project). And the release plugin seems to use the aggregate (though I don't the exact algorithm how it creates the url).

        And to me it makes sense that the SVN path uses the aggregator since these are typically tagged together (for the same reason that you mentioned that they are built simultaneously). The parent on the other hand is just providing defaults at definition time. In my case, it is the parent of completely unrelated projects for which it doesn't make sense to tag them together (or any other runtime mvn task)

        Show
        Rintcius Blok added a comment - I expected the SVN path to be in line with the one that is by default used in the release plugin (if I don't specify a scm element in the child project). And the release plugin seems to use the aggregate (though I don't the exact algorithm how it creates the url). And to me it makes sense that the SVN path uses the aggregator since these are typically tagged together (for the same reason that you mentioned that they are built simultaneously). The parent on the other hand is just providing defaults at definition time. In my case, it is the parent of completely unrelated projects for which it doesn't make sense to tag them together (or any other runtime mvn task)
        Hide
        Dennis Lundberg added a comment -

        OK, I'll try again, this time with feeling:

        The path to a child directory, when using the aggregator, is not used when constructing the SCM URLs. Only the artifactId is used.

        If you want to examine what your POM looks like you can run this command:
        mvn help:effective-pom

        Show
        Dennis Lundberg added a comment - OK, I'll try again, this time with feeling : The path to a child directory, when using the aggregator, is not used when constructing the SCM URLs. Only the artifactId is used. If you want to examine what your POM looks like you can run this command: mvn help:effective-pom
        Hide
        Rintcius Blok added a comment -

        Ah ok that makes sense. The effective-pom showed that the SCM URLs were different than I thought they were, when I refer to a released version of the parent pom. In that case the SCM url of the parent pom is changed to a tags/parent-pom-<version>. I assumed that what was specified under the SCM element in the parent just served as a template, but in case of a release it is changed to the actual url.

        Maybe something can be added to the FAQ about checking the SCM element in the effective-pom since that is quite helpful to get more insight in more complex situations. And it makes perfectly clear when the source of the unexpected behavior is outside the scope of the changelog plugin.
        Anyway, thanks for your explanation Dennis!

        Show
        Rintcius Blok added a comment - Ah ok that makes sense. The effective-pom showed that the SCM URLs were different than I thought they were, when I refer to a released version of the parent pom. In that case the SCM url of the parent pom is changed to a tags/parent-pom-<version>. I assumed that what was specified under the SCM element in the parent just served as a template, but in case of a release it is changed to the actual url. Maybe something can be added to the FAQ about checking the SCM element in the effective-pom since that is quite helpful to get more insight in more complex situations. And it makes perfectly clear when the source of the unexpected behavior is outside the scope of the changelog plugin. Anyway, thanks for your explanation Dennis!
        Hide
        Dennis Lundberg added a comment -

        I added an entry on the FAQ page about SCM URL inheritance.

        Show
        Dennis Lundberg added a comment - I added an entry on the FAQ page about SCM URL inheritance.

          People

          • Assignee:
            Unassigned
            Reporter:
            jens breitenstein
          • Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: