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

Markus Karg commented on MRELEASE-956:
--------------------------------------

Understood. But still I have concerns:

* Your strategy enforces the paradigm that a release is always flollowing a 
flat list of phases. In the real world, there might be organizations having 
rather complex organizational processes which are neither flat nor linear, 
including branches and loops. For example, there even could be parallel tasks 
that have be successful before the next step, or a step must be repeated, etc. 
This seems to be impossible with your model (or at least I it is so complex 
that I did not understand it by the first look), while it is simple with mine.

* * Due to your enforced lilst-of-phases-plus-hints design implementing a 
custom release strategy becomes a rather complex task: One has to be rather 
experienced with Maven / Plugin internals and data structures. Implementing my 
strategy instead is possible even for programming beginners one has to 
implement "onRelease" and can do what he want; only if he wants to call Maven 
he has to learn about Maven APIs.

> Release Strategy Interface
> --------------------------
>
>                 Key: MRELEASE-956
>                 URL: https://issues.apache.org/jira/browse/MRELEASE-956
>             Project: Maven Release Plugin
>          Issue Type: New Feature
>          Components: perform
>            Reporter: Markus Karg
>            Assignee: Robert Scholte
>              Labels: strategy
>             Fix For: 3.0.0
>
>
> The release plugin has built-in strategies for preparation and performing of 
> a release. For example, the strategy for preparation contains increasing 
> versions numbers, comitting to SCM, tagging in SCM, and so.
> Not all users share the same strategies in real life. For example, some 
> companies might want to have a tag AND and a branch created in SCM when 
> preparing a release. Or other companies might want to have tag created for 
> "prepared-release-1.0.0" at preparation, and replace it by "release-1.0.0" as 
> part of release:perform.
> To provide better flexibility of such company-wide strategies, it might be a 
> solution to introduce an interface "ReleaseStrategy" which acts as a worker 
> for the prepare and perform goals (and possibly others). The current built-in 
> strategy could be refactored to be a default-included 
> "DefaultReleaseStrategy" for backwards compatibility, while users could 
> configure a new property "releaseStrategy" to point to an Extension which 
> provides a differently working strategy.
> To make this work, certainly the Strategy implementation needs to get passed 
> a context which allows to fire actions like "tag version", "create branch", 
> "change pom version" and so on, just as the current built-in strategy has.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to