Am 2022-03-19 um 15:17 schrieb Slawomir Jaranowski:
Hi

We have three projects:
- maven-verifier
- maven-invoker
- maven-invoker-plugin

They are similar ... current situation

maven-verifier
  - can execute Maven in forked and embedded mode
  - have assertions to verify executing result
  - simply Maven configuration by api
  - use own implementation for Maven executing

maven-invoker
  - can execute Maven only in fork mode
  - only status code of executed Maven is reported
  - many method for configure almost all Maven cli options by api

maven-invoker-plugin
  - discover Maven projects to execute
  - possibility to execute verification by groovy or bsh scripts
  - possibility to execute Maven project in parallel
  - use maven-invoker for executing Maven

So we see that some of the code is duplicated by maven-verifier and
maven-invoker.

Proposition:
  - implements embedded mode in maven-invoker - maven-invoker-plugin can
consume it for speed up test executing
  - use maven-invoker in maven-verifier - we can remove duplicated code by
projects

Short term plan:
  - release maven-invoker 3.2.0 - there are many improvements [1]
  - finish and release maven-invoker-plugin 3.3.0 [2]

Long term plan:
  - add embedded mode for maven-invoker
  - possibility to use embedded mode in maven-invoker-plugin
  - refactor maven-invoker .... for many dedicated cli options ... it can
break compatibility
  - use maven-invoker in maven-verifier - after 1.8 can be used in verifier
... Maven Core its
  - refactor maven-verifier, add more verification method, remove dependency
to JUnit4 - can break compatibility

Any other propositions, idea how those projects should be connected?
Any other requirements, use case ...


Slawomir,

first of all I'd like to raise a *huge thank you* for getting involved into this complex and messy topic. I also mostly agree with all of your current observations.

I like to sketch my vague imagination of a proper amalgamation of all current modules/projects: * Properly support of running full blown Maven projects on top of either embedded or forked Maven with a this as possibe layer, e.g., not arg parsing as done now, proper notifying of cases not possible with embedded or fork more, e.g, settings JVM options only on fork mode.
* Obtaining exit code and obtain in a easy fashion
* Be usable in Core ITs, components and plugins alike.
* Ability to run verification code either direct in Java or abstracted, as you noted, in whatever JSR supports, mostly Groovy or BeanShell. * Proper separation between system propeties and user properties which is not present in Maven currently

I have no opinion on the JUnit breakage, but moving all of our tests to JUnit 5 is a huge undertaking and given that we have a lot of topic makes it even harder.


My basic understanding what components should do:
* Maven Invoker: Simply invokes Maven with all requires args
* Maven Verifier: Verifies the outcome of this invocation.
* Maven Verifier Plugin: Wraps all of that

For me, invocation is not necessarify verification.

Michael

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to