You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Thibaud Lepretre (JIRA)" <ji...@apache.org> on 2019/07/30 10:02:00 UTC

[jira] [Comment Edited] (MNG-6716) relative testSourceDirectory on macos throw duplicate class error

    [ https://issues.apache.org/jira/browse/MNG-6716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16895981#comment-16895981 ] 

Thibaud Lepretre edited comment on MNG-6716 at 7/30/19 10:01 AM:
-----------------------------------------------------------------

[~michael-o] I think the main problem is about

[https://github.com/apache/maven/blob/master/maven-core/src/main/java/org/apache/maven/project/MavenProject.java#L316]

Since I'm using relative path with {{..}} the final {{String path}} will not equals because we're comparing {{String}} instead of {{File}} or {{Path}}.

{{code:java}}
"/private/tmp/ws/bug-macos-tstsrc-relative-path-src/../bug-macos-tstsrc-relative-path-tst/src".equals("/private/tmp/ws/bug-macos-tstsrc-relative-path-tst/src")
{{code}}

will be always {{false}}

I would like to suggest doing {{path = Paths.get(path).normalize().toString()}} before adding to {{List<String> paths}} to be sure we're not adding the exact same path in term of Filesystem and not {{String}}

{{code:java}}
String a = Paths.get("/private/tmp/ws/bug-macos-tstsrc-relative-path-tst/src").normalize().toString();
String b = Paths.get("/private/tmp/ws/bug-macos-tstsrc-relative-path-src/../bug-macos-tstsrc-relative-path-tst/src").normalize().toString();
a.equals(b);
{{code}}

will be {{true}}

What do you think about that?


was (Author: kakawait):
[~michael-o] I think the main problem is about

[https://github.com/apache/maven/blob/master/maven-core/src/main/java/org/apache/maven/project/MavenProject.java#L316]

Since I'm using relative path with {{..}} the final {{String path}} will not equals because we're comparing {{String}} instead of {{File}} or {{Path}}.

I would like to suggest doing {{path = Paths.get(path).normalize()}} before adding to {{List<String> paths}} to be sure we're not adding the exact same path in term of Filesystem and not {{String}}

What do you think about that?

> relative testSourceDirectory on macos throw duplicate class error
> -----------------------------------------------------------------
>
>                 Key: MNG-6716
>                 URL: https://issues.apache.org/jira/browse/MNG-6716
>             Project: Maven
>          Issue Type: Bug
>          Components: core, POM
>    Affects Versions: 3.6.1
>         Environment: MacOS Sierra 10.12.6
> mvn 3.6.1
>            Reporter: Thibaud Lepretre
>            Priority: Minor
>             Fix For: waiting-for-feedback
>
>
> With custom folder structure where test source folder is not sharing the same parent folder as source folder, for example (is just a sample structure itself is not the key point):
> {code:java}
> ws/bug-macos-tstsrc-relative-path-src/src/main/java
> ws/bug-macos-tstsrc-relative-path-tst/src
> {code}
> With following pom.xml customization
> {code:java}
> <testSourceDirectory>../bug-macos-tstsrc-relative-path-tst/src</testSourceDirectory> {code}
> On {{<= 3.6.0}} *everything works* but until 3.6.1 MacOS (I'm not able to reproduce on Docker container maven:3.6.1), I have the following error:
> {code:java}
> AppTest.java:[10,8] duplicate class: dev.thibaud.AppTest{code}
> And if I check with {{-X}} I saw 2 paths added instead of 1
> {code:java}
> [DEBUG] Source roots:
>  [DEBUG]  /private/tmp/mvntest/ws/bug-macos-tstsrc-relative-path-src/../bug-macos-tstsrc-relative-path-tst/src
>  [DEBUG]  /private/tmp/mvntest/ws/bug-macos-tstsrc-relative-path-tst/src{code}
> h2. *How to reproduce:*
> {code:java}
> #!/usr/bin/env bash
> readonly SRC_FOLDER="bug-macos-tstsrc-relative-path-src"
> readonly TST_FOLDER="bug-macos-tstsrc-relative-path-tst"
> mkdir -p ws
> cd ws/
> mvn archetype:generate -DgroupId=dev.thibaud -DartifactId=${SRC_FOLDER} -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
> mkdir -p ${TST_FOLDER}/src/
> mv ${SRC_FOLDER}/src/test/java/* ${TST_FOLDER}/src/
> rm -fr ${SRC_FOLDER}/src/test
> cat <<EOT > ${SRC_FOLDER}/pom.xml
> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
>   <modelVersion>4.0.0</modelVersion>
>   <groupId>dev.thibaud</groupId>
>   <artifactId>bug-macos-tstsrcrelative-path</artifactId>
>   <packaging>jar</packaging>
>   <version>1.0-SNAPSHOT</version>
>   <name>bug-macos-tstsrcrelative-path</name>
>   <url>http://maven.apache.org</url>
>   <dependencies>
>     <dependency>
>       <groupId>junit</groupId>
>       <artifactId>junit</artifactId>
>       <version>3.8.1</version>
>       <scope>test</scope>
>     </dependency>
>   </dependencies>
>   <build>
>       <testSourceDirectory>../${TST_FOLDER}/src</testSourceDirectory>
>   </build>
> </project>
> EOT{code}
> Then simply run
> {code:java}
> mvn -f bug-macos-tstsrc-relative-path-src/pom.xml clean test -X{code}
> h2. *Workaround:*
> is not using relative path by editing
> {code:java}
> <testSourceDirectory>../bug-macos-tstsrc-relative-path-tst/src</testSourceDirectory>{code}
> to
> {code:java}
> <testSourceDirectory>${project.basedir}/../bug-macos-tstsrc-relative-path-tst/src</testSourceDirectory>{code}
>  
>  PS: maybe affect {{sourceDirectory}} but no tested



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)