[
http://jira.codehaus.org/browse/MIDEA-103?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dennis Lundberg closed MIDEA-103.
---------------------------------
Assignee: Dennis Lundberg
Resolution: Fixed
Fix Version/s: 2.2
Fixed in r678718.
New SNAPSHOT deployed: maven-idea-plugin-2.2-20080722.112900-8
> Incorrect module paths are generated when parent project name is prefix in
> child project names
> ----------------------------------------------------------------------------------------------
>
> Key: MIDEA-103
> URL: http://jira.codehaus.org/browse/MIDEA-103
> Project: Maven 2.x IDEA Plugin
> Issue Type: Bug
> Affects Versions: 2.1
> Environment: Any
> Reporter: Matt Jensen
> Assignee: Dennis Lundberg
> Priority: Minor
> Fix For: 2.2
>
> Attachments: AbstractIdeaMojo.java.patch
>
>
> I have several projects which are structured as follows:
> .../myproject/myproject
> .../myproject/myproject-module1
> .../myproject/myproject-module2
> In the above ".../myproject" refers to the top level directory under which
> all of the project's modules are stored. "/myproject/myproject" is the
> parent module, and "/myproject/myproject-module1" and
> "/myproject/myproject-module2" are child modules of that parent.
> After upgrading to Maven 2.0.7, mvn idea:idea no longer creates the IPR file
> (/myproject/myproject/myproject.ipr) correctly. Instead of referencing
> "/myproject/myproject-module1/myproject-module1.iml" and
> "/myproject/myproject-module2/myproject-module2.iml" for the child modules,
> it references "/myproject/module1/myproject-module1.iml" and
> "/myproject/module2/myproject-module2.iml." Notice what has happened
> here--the "myproject-" prefix has been stripped from the relative paths to
> the child modules.
> I believe that the cause of this lies in AbstractIdeaMojo.java, method
> toRelative(). It is attempting to determine whether "absolutePath" lies
> *under* "basedir" in the directory structure. It does this by verifying that
> absolutePath starts with basedir, and if so, checking whether absolutePath is
> longer than basedir. If so, it chops basedir from the beginning of
> absolutePath and uses the result as the relative module path. Here is the
> code:
> if ( absolutePath.startsWith( basedir.getAbsolutePath() )
> && absolutePath.length() > basedir.getAbsolutePath().length() )
> {
> relative = absolutePath.substring(
> basedir.getAbsolutePath().length() + 1 );
> }
> I do not believe that this logic is quite what is intended. It will match
> both in the situation where the child project is located under the basedir,
> AND where the child project's name starts with the parent project's name. I
> think the former case is what is intended; the latter is not. In other
> words, the following errantly match:
> basedir: ".../myproject/myproject"
> absolutePath: ".../myproject/myproject-module1/myproject-module1.iml"
> Note that, given the "if" condition above, these match...but it does not mean
> that absolutePath refers to a subdirectory in basedir. I think the fix for
> this issue would involve something like such, to ensure that "relative"
> really does refer to a subdirectory of basedir on return:
> if ( absolutePath.startsWith( basedir.getAbsolutePath() + File.separator )
> && absolutePath.length() > basedir.getAbsolutePath().length() )
> {
> relative = absolutePath.substring(
> basedir.getAbsolutePath().length() + 1 );
> }
> We're now *only* matching if absolutePath starts with basedir *as a directory
> name*. This is done by appending the directory separator to the basedir
> string before doing the check. I have not had the opportunity to test this
> yet, but the fix will be something at least *close* to that.
> An interim workaround is to rename the parent project to something like
> "myproject-parent", which makes it no longer a "starts with" substring of
> "myproject-module1".
> I hope I have conveyed the problem/solution adequately. It's kind of tough
> to put words on it. :-)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira