Maven 2 & 3
  1. Maven 2 & 3
  2. MNG-4583

warning printed when a pom does not use an activated profile is poorly worded and also should not be printed for multi-module builds

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Minor Minor
    • Resolution: Not A Bug
    • Affects Version/s: 2.0.11, 2.2.1, 3.0-alpha-6
    • Fix Version/s: 3.0-alpha-6
    • Component/s: Profiles
    • Labels:
      None
    • Complexity:
      Intermediate
    • Number of attachments :
      1

      Description

      This is a followup to http://jira.codehaus.org/browse/MNG-3641. Refer to that issue for the background.

      The current warning message is:

      "Profile with id: '" + explicitProfileId + "' has not been activated."

      I think this message is misleading, because the profile actually is activated - it's just not used at all in the pom being processed. I suggest changing the message to something like:

      "Profile with id '" + explicitProfileId + "' is activated, but this pom does not contain any usages of the profile."

      Also, I don't think it makes sense to print this warning at all in a multi-module build. In the large multi-module project I work on, we have a number of profiles that are only used in a handful of the 50 or so modules.

        Issue Links

          Activity

          Hide
          Benjamin Bentmann added a comment -

          The output from Maven 3.0-alpha-6 has already been clarified:

          [WARNING] The requested profile "foo" could not be activated because it does not exist.
          

          I think this message is misleading, because the profile actually is activated

          Something that doesn't exist can hardly be activated so I disagree with your argument here.

          Also, I don't think it makes sense to print this warning at all in a multi-module build.

          The original request for this warning was to capture typos and this holds for any build. At least Maven 3 outputs this warning at most once so it doesn't matter how many modules your project has.

          Show
          Benjamin Bentmann added a comment - The output from Maven 3.0-alpha-6 has already been clarified: [WARNING] The requested profile "foo" could not be activated because it does not exist. I think this message is misleading, because the profile actually is activated Something that doesn't exist can hardly be activated so I disagree with your argument here. Also, I don't think it makes sense to print this warning at all in a multi-module build. The original request for this warning was to capture typos and this holds for any build. At least Maven 3 outputs this warning at most once so it doesn't matter how many modules your project has.
          Hide
          Wendy Smoak added a comment -

          How about 'Profile with id [X] is activated, but not defined' or '...does not exist' ?

          I agree that the message is confusing, there's an irc conversation somewhere in the logs when I first encountered it...

          Show
          Wendy Smoak added a comment - How about 'Profile with id [X] is activated, but not defined' or '...does not exist' ? I agree that the message is confusing, there's an irc conversation somewhere in the logs when I first encountered it...
          Hide
          Ian Springer added a comment -

          > [WARNING] The requested profile "foo" could not be activated because it does not exist.

          I don't agree that this is clarified.

          Based on my understanding on Maven terminology, "foo" is activated in the reactor. It's just not referenced in the pom currently being processed, which is the point of this warning. When building a single module, there's a good chance this is a mistake/typo in the user's settings.xml or mvn command line. For a multi-module build, it is common to activate a profile "foo" that may only be referenced in some of the modules in the reactor, so in that case, I don't think the warning should be printed at all, or maybe it should be printed as an INFO or DEBUG message, rather than a WARN.

          Show
          Ian Springer added a comment - > [WARNING] The requested profile "foo" could not be activated because it does not exist. I don't agree that this is clarified. Based on my understanding on Maven terminology, "foo" is activated in the reactor. It's just not referenced in the pom currently being processed, which is the point of this warning. When building a single module, there's a good chance this is a mistake/typo in the user's settings.xml or mvn command line. For a multi-module build, it is common to activate a profile "foo" that may only be referenced in some of the modules in the reactor, so in that case, I don't think the warning should be printed at all, or maybe it should be printed as an INFO or DEBUG message, rather than a WARN.
          Hide
          Benjamin Bentmann added a comment -

          For a multi-module build, it is common to activate a profile "foo" that may only be referenced in some of the modules in the reactor, so in that case, I don't think the warning should be printed at all

          And that's what Maven does. The attached example has two modules mod-a and mod-b, each with an equally named profile. Running "mvn validate -P mod-a" from the parent doesn't produce any warnings.

          Show
          Benjamin Bentmann added a comment - For a multi-module build, it is common to activate a profile "foo" that may only be referenced in some of the modules in the reactor, so in that case, I don't think the warning should be printed at all And that's what Maven does. The attached example has two modules mod-a and mod-b, each with an equally named profile. Running "mvn validate -P mod-a" from the parent doesn't produce any warnings.
          Hide
          Ian Springer added a comment -

          Great, it's good to hear that's already been addressed.

          Would you please reopen this issue, so the misleading warning message can be addressed for single-module builds?

          Show
          Ian Springer added a comment - Great, it's good to hear that's already been addressed. Would you please reopen this issue, so the misleading warning message can be addressed for single-module builds?
          Hide
          Benjamin Bentmann added a comment - - edited

          Would you please reopen this issue, so the misleading warning message can be addressed for single-module builds?

          No, I checked with some other Maven developers and we agreed that the warning as produced in Maven 3 is fine. As I tried to explain before, a command line like "mvn ... -P foo" does not mean the profile "foo" gets actually activated. You as a user can only request to activate a profile, the actual activation happens inside Maven by injecting the profile into the effective model and only if such a profile exists. You can request to activate something that doesn't exist but I don't agree that stating a non-existing profile has been activated is an improvement to the warning message.

          Great, it's good to hear that's already been addressed.

          Using the attached example project, I didn't observe any Maven version to output the warning more than once during a multi-module build.

          Show
          Benjamin Bentmann added a comment - - edited Would you please reopen this issue, so the misleading warning message can be addressed for single-module builds? No, I checked with some other Maven developers and we agreed that the warning as produced in Maven 3 is fine. As I tried to explain before, a command line like "mvn ... -P foo" does not mean the profile "foo" gets actually activated. You as a user can only request to activate a profile, the actual activation happens inside Maven by injecting the profile into the effective model and only if such a profile exists. You can request to activate something that doesn't exist but I don't agree that stating a non-existing profile has been activated is an improvement to the warning message. Great, it's good to hear that's already been addressed. Using the attached example project, I didn't observe any Maven version to output the warning more than once during a multi-module build.
          Hide
          Ian Springer added a comment -

          Interesting. That's not how activation is described in the docs (http://maven.apache.org/guides/introduction/introduction-to-profiles.html). Hopefully, the docs will be updated for 3.0. Otherwise, the warning message will continue to be confusing/misleading for users, as it has been for me.

          Show
          Ian Springer added a comment - Interesting. That's not how activation is described in the docs ( http://maven.apache.org/guides/introduction/introduction-to-profiles.html ). Hopefully, the docs will be updated for 3.0. Otherwise, the warning message will continue to be confusing/misleading for users, as it has been for me.
          Hide
          Stevo Slavic added a comment -

          Are there any means to configure Maven not to print this warning? In my case a multi-module project uses activated profile only in a single module. If this is not supported, maybe support could be added, e.g. to allow one to specify profile names for which this warning should not be printed.

          Show
          Stevo Slavic added a comment - Are there any means to configure Maven not to print this warning? In my case a multi-module project uses activated profile only in a single module. If this is not supported, maybe support could be added, e.g. to allow one to specify profile names for which this warning should not be printed.
          Hide
          Benjamin Bentmann added a comment -

          The warning is supposed to only show up when not a single project within the reactor was affected by the profile. So consider to provide an example project to prove otherwise.

          Show
          Benjamin Bentmann added a comment - The warning is supposed to only show up when not a single project within the reactor was affected by the profile. So consider to provide an example project to prove otherwise.
          Hide
          Stevo Slavic added a comment -

          It seems this is m2eclipse issue - checked, it doesn't get printed in CLI, only in eclipse for incremental builds.

          Show
          Stevo Slavic added a comment - It seems this is m2eclipse issue - checked, it doesn't get printed in CLI, only in eclipse for incremental builds.
          Hide
          Oblio added a comment -

          The issue's closed or I'd +1 it.

          Show
          Oblio added a comment - The issue's closed or I'd +1 it.

            People

            • Assignee:
              Benjamin Bentmann
              Reporter:
              Ian Springer
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: