On Fri 15 Nov 2019 at 09:18, Robert Scholte <rfscho...@apache.org> wrote:

> On 13-11-2019 21:46:04, Stephen Connolly <stephen.alan.conno...@gmail.com>
> wrote:
> On Wed 13 Nov 2019 at 19:29, Robert Scholte wrote:
>
> > The name of the branch contains MNG-5668, but it contains much more.
> > I'd likely lead to comments like "great", without being explicit saying
> > which part(s).
> > I am aware there's all proposals touch the same code, but can be released
> > isolated from each other.
> > e.g. if the enums-value are changed to "pre-" and "post-" it should work
> > for the existing phases, which means we could already use it quite soon
> > (still need to test it myself, though)
> > I also want to provide a counter proposal, but that takes time and for me
> > there are other issues more important.
>
>
> How would you handle the use case that we’ve already had reported:
>
> As a user I want to test my integration tests in my IDE by running `mvn
> integration-test` so that the test environment is not torn down and I can
> debug and rerun the tests until I’m ready
>
> Robert Scholte:
> I'd say if they want to set up there environment for the integration
> tests, they'd be running pre-integration-test.
> Next select in the IDE the test to execute. I don't see an issue here.
> Calling pre-integration-test implies NOT running post-integration-test.


I disagree. I think if you run the pre- phase then you should have the
post- also run

I think we could have a differential failure mode in the pre-phases though.
Iow a pre- phase failure returns a different exit code than the actual
phase itself

>
>
> Every time I explain people about how Maven works with phases, they are
> amazed it doesn't run the post-phase. I doubt we'll see issues if we switch
> to expected behavior.
>
> Based on the different views, I hope to see more involvement of PMC
> members, because this will be a turning point that probable cannot be
> undone.
>
>
> With the new phases, the existing pom will still work, and some user opting
> into after:integration-test knows what they are getting
>
>
> >
> > My biggest fear is that this will result in an All-Or-Nothing, and I like
> > to prevent that. If the try-finally part works as expected we can extract
> > that part and prepare for one of the next Maven releases.
>
>
> I’d like to understand your fear better. I’ve been playing with the PoC a
> bit, and TBH it just feels right.
>
> For sure I’d prefer a schema change to encoding in a string, but I’m also
> inclined towards string encoded dependency GAVs for 5.x so that wouldn’t be
> the worst if we went that way.
>
> With pom rewriting, I think we could do a 4.1.0 model version that moved
> the execution point and priority to attributes, by writing as a 4.0.0 with
> the string encoded form... iow rewriting in 4.x allows us to tidy up the
> schema as long as it has a 1:1 mapping to a 4.0.0 modelVersion that gets
> deployed.
>
>
> >
> > Robert
> >
> >
> >
> >
> >
> > On 12-11-2019 10:25:42, Stephen Connolly
> > wrote:
> > On Tue 12 Nov 2019 at 07:34, Robert Scholte wrote:
> >
> > > This is not just MNG-5668, but also contains several non-existing
> issues,
> > > that should be mentioned explicitly as they will have huge impact:
> > >
> > > - support before:/after: prefix for phase-binding
> > >
> > > - introduce priority
> > > - reduce phases (this one hasn't been implemented, but seems to be the
> > > reason behind before:/after:)
> >
> >
> > All detailed in the proposal on the wiki:
> > https://cwiki.apache.org/confluence/display/MAVEN/Dynamic+phases
> >
> > Reducing phases would be a big change and not before 4.x at least (maybe
> > 5.x more realistically... at least we’d need to deprecate the phases for
> a
> > good while before removing any)
> >
> >
> > >
> > > I would like see separate branches for all of them, as they all have
> > their
> > > own discussion.
> >
> >
> > The whole point of a PoC is the get feedback. I don’t see utility in
> > separate branches as they are all touching the same code.
> >
> > Once we get feedback we can decide where we want to go from there.
> >
> >
> > >
> > > Robert
> > > On 11-11-2019 20:31:44, Stephen Connolly
> > > wrote:
> > > https://github.com/apache/maven/tree/mng-5668-poc is my POC
> > implementation
> > > for anyone interested in trying it out.
> > >
> > > Here's a pom that builds with the PoC
> > >
> > >
> > > 4.0.0
> > > localdomain
> > > foo
> > > 1.0-SNAPSHOT
> > >
> > >
> > >
> > > maven-antrun-plugin
> > >
> > >
> > > 1
> > > before:integration-test
> > >
> > > run
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > 2
> > > before:integration-test[1000]
> > >
> > > run
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > 3
> > > after:integration-test
> > >
> > > run
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > 4
> > > integration-test
> > >
> > > run
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > On Sun, 27 Oct 2019 at 10:55, Robert Scholte wrote:
> > >
> > > > TLDR: We can do better than, but who is in control? lifecycle-owner,
> > > > plugin-owner or pom-owner?
> > > >
> > > > I think we all recognize the issues we're trying to solve, but to me
> > this
> > > > proposal is not the right solution.
> > > >
> > > > In general there are 2 issues:
> > > > 1. provide a mechanism that makes sure some executions are called
> even
> > > its
> > > > matching main phase fails.
> > > > 2. provide a mechanism then ensures the order of executions.
> > > >
> > > > The problem of issue 1 is described in MNG-5668, but not the final
> > > > solution.
> > > > MNG-5668 proposes to give this power to the *lifecycle-owner*,
> whereas
> > > > stage 2 proposes to give the power to the *pom-owner*.
> > > > Both agree on the same thing: by default these post-phases should be
> > > > triggered even after failure of the matching main phase. This is
> > actually
> > > > already expected behavior, so I don't expect real issues when
> > > implementing
> > > > this adjusted behavior.
> > > > To me after:integration-test is just an alias for
> > post-integration-test,
> > > > both should work the same way.
> > > >
> > > > Issue 2 is a more common problem: controlling the order of
> executions.
> > > > In some cases it is pretty hard or even impossible to get the
> preferred
> > > > order. The latter happens when 2 goals of the same plugin must be
> > > executed
> > > > and a goal of another plugin are competing within the same phase.
> > > >
> > > > So let's first take a look at a phase: is there a clear definition?
> > > > "A phase is a step in what Maven calls a 'build lifecycle'. The build
> > > > lifecycle is an ordered sequence of phases involved in building a
> > > project".
> > > > "Lifecycle phases are intentionally vague, defined solely as
> > > > validation, testing, or deployment, and they may mean different
> things
> > to
> > > > different projects."
> > > > Phases are intended to be called from the commandline, and within the
> > pom
> > > > you define you can control what should happen before or during that
> > > phase.
> > > >
> > > > To me changing the content of the -element is a codesmell as it
> > > > becomes more than just a phase, and we start programming. Why do we
> > need
> > > it?
> > > > In the end it is all about ensuring the order of plugin executions.
> > > > Stage3+4 proposes to give the power to the *pom-owner*,
> > > > whereas MPLUGIN-350[2] proposes to give this power to the
> > *plugin-owner*.
> > > > IIUR Gradle does not have this issue, because their plugins are aware
> > of
> > > > input and output. They ensure that if the output plugin X is the
> input
> > of
> > > > plugin Y, than X is executed before Y.
> > > > And we should do the same. And this comes with benefits: we can
> decide
> > if
> > > > executions within a project can be executed in parallel. And the pom
> > > stays
> > > > as clean as it is right now.
> > > >
> > > > In cases when there's a better ownership than the pom-owner, I would
> > > > prefer to choose that solution. I already notice how people (don't)
> > build
> > > > up their knowledge regarding poms. The lifecycle-owner and
> plugin-owner
> > > > know much better what they're doing.
> > > >
> > > > thanks,
> > > > Robert
> > > >
> > > > Some food for thoughts: consider a developer that wants to run up
> until
> > > > pre-integration-test, because he wants to bring his system in a
> certain
> > > > state so he can work with IDE to do some work.Can we say that If And
> > Only
> > > > If somebody called the pre-PHASE, there's no reason to end with the
> > > > post-PHASE?
> > > >
> > > > [1] https://issues.apache.org/jira/browse/MNG-5668
> > > > [2] https://issues.apache.org/jira/browse/MPLUGIN-350
> > > > On 26-10-2019 14:20:50, Stephen Connolly
> > > > wrote:
> > > > On Sat 26 Oct 2019 at 10:50, Robert Scholte wrote:
> > > >
> > > > > To avoid confusion, let's call it stages.
> > > > >
> > > > > Stage 1: Always call post-bound executions (MNG-5665[1])
> > > > > Stage 2: before and after
> > > > > Stage 3: priorities (MNG-3522[2])
> > > > > Stage 4: transitional lifecycle
> > > >
> > > >
> > > > I have a prototype of stages 1-3 nearly (80%) done... just have to
> > polish
> > > > up and validate the bound executions with some tests
> > > >
> > > >
> > > > >
> > > > > For both all you need to start evaluating the value of phase.
> > > > > For now we can assume that after:clean is just another label for
> > > > > post-clean and will have exactly the same effect.
> > > > > MNG-5665 contains a proposal to change the xml, but we shouldn't do
> > > that
> > > > > (yet). Let's start with a hardcoded list of postphases (or in case
> a
> > > goal
> > > > > fails, see if a post-x phase exists). Stage 1 is to make it work,
> > > stage 2
> > > > > to make it configurable.
> > > > > IIRC you cannot ask from inside a Mojo if is was called explicitly
> or
> > > > > because it was bound to a phase, nor can you ask for the value of
> > this
> > > > > phase. I kind of like this, plugins shouldn't care about this.
> > > > > However, inside Maven it will become important at which phase it is
> > to
> > > > > know if there are more executions to call OR create blocks of
> > > executions.
> > > > > Now it is just a list of executions: loop and fail fast.
> > > > >
> > > > > thanks,
> > > > > Robert
> > > > >
> > > > > [1] https://issues.apache.org/jira/browse/MNG-5665
> > > > > [2] https://issues.apache.org/jira/browse/MNG-3522
> > > > > On 25-10-2019 21:33:14, Stephen Connolly
> > > > > wrote:
> > > > > Robert,
> > > > >
> > > > > I would be fine splitting out into, pardon the pun, phases:
> > > > >
> > > > > Phase 1: before and after
> > > > > Phase 2: priorities
> > > > > Phase 3: transitional lifecycle
> > > > >
> > > > > Might have a phase 1.5 of before:* and after:* to catch the start
> of
> > a
> > > > > lifecycle and the end of a lifecycle...
> > > > >
> > > > > On Fri 25 Oct 2019 at 20:30, Stephen Connolly
> > > > > stephen.alan.conno...@gmail.com [mailto:
> > > stephen.alan.conno...@gmail.com
> > > > ]>
> > > > > wrote:
> > > > >
> > > > > Robert, Michael, Tibor, let’s continue here (though I asked Infra
> and
> > > > it’s
> > > > > fine that anyone in the community can join our Slack)
> > > > >
> > > > > On Fri 25 Oct 2019 at 20:01, Stephen Connolly
> > > > > stephen.alan.conno...@gmail.com [mailto:
> > > stephen.alan.conno...@gmail.com
> > > > ]>
> > > > > wrote:
> > > > >
> > > > > https://cwiki.apache.org/confluence/display/MAVEN/Dynamic+phases [
> > > > > https://cwiki.apache.org/confluence/display/MAVEN/Dynamic+phases]
> > > > >
> > > > > Thoughts?
> > > > > --
> > > > >
> > > > > Sent from my phone
> > > > > --
> > > > >
> > > > > Sent from my phone
> > > > > --
> > > > >
> > > > > Sent from my phone
> > > >
> > > > --
> > > > Sent from my phone
> > > >
> > >
> > --
> > Sent from my phone
> >
> --
> Sent from my phone
>
-- 
Sent from my phone

Reply via email to