Maven 2 & 3

Build not working if pom.xml is a symbolic link

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 2.0.7
  • Fix Version/s: 2.0.8
  • Component/s: None
  • Labels:
    None
  • Number of attachments :
    1

Description

We are running on Ubuntu and our environment is as follows:

./pom.xml (is a symbolic link to /baseline/pom.xml)
./module/pom.xml (is a symbolic link to /baseline/module/pom.xml)

If you go into the module directory and run a compile (mvn compile), everything works fine.

If you try to run a compile from the parent pom, maven does not resolve the basedir correctly when it tries to compile the module. It tries to create the target directory in /baseline/module/target, rather than in the local module directory.

Everything works as expected in release 2.0.6. Something changed with the symbolic link resolution in 2.0.7 that breaks my builds.

-Rob

Issue Links

Activity

Hide
Robert Mohn added a comment -

I haven't been able to verify this, but from looking at the code, it looks like the following change:

revision 543362, Fri Jun 1 02:29:37 2007 UTC

on the file:

maven-2.0.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java

is causing the problem.

Show
Robert Mohn added a comment - I haven't been able to verify this, but from looking at the code, it looks like the following change: revision 543362, Fri Jun 1 02:29:37 2007 UTC on the file: maven-2.0.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java is causing the problem.
Hide
Robert Mohn added a comment -

This patch, which was done for windows, causes the path to symbolically linked pom.xml files on unix to be incorrect.

Show
Robert Mohn added a comment - This patch, which was done for windows, causes the path to symbolically linked pom.xml files on unix to be incorrect.
Hide
Robert Mohn added a comment -

Patch for the issue. The patch checks if the file is a symlink before doing the getCanonicalFile conversion. The 'isSymLink' method was taken from CleanMojo.java – so at some point we should move that method into a utility class.

Show
Robert Mohn added a comment - Patch for the issue. The patch checks if the file is a symlink before doing the getCanonicalFile conversion. The 'isSymLink' method was taken from CleanMojo.java – so at some point we should move that method into a utility class.
Hide
Brett Porter added a comment -

I wasn't able to apply your patch, since AFAICT that would simply revert the previous issue (on Windows, it would not canonicalize either do to the check).

Instead, I used an Os.isFamily check to only canonicalize on Windows.

Show
Brett Porter added a comment - I wasn't able to apply your patch, since AFAICT that would simply revert the previous issue (on Windows, it would not canonicalize either do to the check). Instead, I used an Os.isFamily check to only canonicalize on Windows.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: