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

Slawomir Jaranowski commented on MNG-7625:
------------------------------------------

[~gnodet] 

I used {{org.apache.maven.settings.v4.SettingsMerger}} instead of 
{{{}org.apache.maven.settings.merge.MavenSettingsMerger{}}}.

{{MavenSettingsMerger}} set {{sourceLevel}} on recessive Settings, this actions 
can be done once for the same instance of object.

{{m-invoker-p}} need call merge {{Setings}} many time for each test project, as 
{{recessive Settings}} use copy of current {{Settings}} from running 
{{{}Session{}}}.

Copy of {{Setings}} is done by {{{}SettingsUtils#copySettings{}}}, where in the 
real we have new {{Maven 3 Settings}} with references to old {{Maven 4 
Settings}} as delegate. 
So {{MavenSettingsMerger#merge}} will change status of delegate object and 
finally current Maven Session.

I don't understand what for is {{TrackableBase#SourceLevel}} it look like is 
only used by {{MavenSettingsMerger}}

We also have two implementation of merging settings - {{v4.SettingsMerger}} and 
old {{MavenSettingsMerger}} - maybe one should be deprecated, and we should use 
one implementation.

 In m-invoker-p there is a hack for reset {{sourceLevel}}, but now is not 
working because real Session is in delegate field:
https://github.com/apache/maven-invoker-plugin/blob/bfb75f9e52e93478dab710bb7243978c06f48d1a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java#L1580-L1618

> Restore compatibility with Maven 3 - SettingsUtils#merge
> --------------------------------------------------------
>
>                 Key: MNG-7625
>                 URL: https://issues.apache.org/jira/browse/MNG-7625
>             Project: Maven
>          Issue Type: Task
>    Affects Versions: 4.0.0-alpha-3
>            Reporter: Slawomir Jaranowski
>            Assignee: Slawomir Jaranowski
>            Priority: Major
>
> Maven 3 has method:
> {code:java}
> void SettingsUtils#merge(org.apache.maven.settings.Settings, 
> org.apache.maven.settings.Settings, java.lang.String)
> {code}
> It is used by {{maven-invoker-plugin}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to