Here you go, that applied from above to enunciate:
https://github.com/stoicflame/enunciate/pull/1166

Notes:
- maven-filtering has some issues, so "locked down" (added comment) and
added exclusions (3.2.0 and 3.3.0 will NOT work)
- added TODOs that should be addressed
- you have deprecations (see warnings on console when building with 3.9.1)
and you use maven-compat deprecated module... these will need to be
updated. This WILL work with 3.9.1, but is recommended to move from them.

HTH
T

On Mon, Mar 20, 2023 at 8:01 PM Tamás Cservenák <ta...@cservenak.net> wrote:

> Hey Ryan,
>
> (you might remember me, was committer on Enunciate project, while it was
> on Codehaus)
>
> Let me start from the far end: When you say "Maven 3.x", you most probably
> mean (or you want to mean) Maven 3.2.5 and "onwards" (3.9.1 inclusive).
> Simply put, you should not strive to cover "all" from 3.0.x to 3.9.x, for
> simple (technical) reasons: Maven 3.0.x used org.sonatype package for
> resolver, Maven 3.1.x did not support Eclipse Sisu index usage, so the
> "most sane" Maven range to cover today is Maven 3.2.5-3.9.1. Actually, this
> is what we do at ASF Maven project as well, almost all "core" plugins are
> declared as compatible with this Maven range (with some rare exceptions).
> By targeting this range, you get rid of ugly problems like package renames,
> and various issues and shortcomings (like forced use of Plexus XML, etc).
> We also target Java 8 bytecode these days, we stopped supporting Java 7 and
> older platforms.
>
> We, as contributors of the Maven project, simply have no resources to
> cover 10+ years (3.0 is 2010, 3.1 is 2013) of legacy, so this is the "best
> effort" we came up with. Or in other words, if someone MUST HAVE Maven
> support for some pre-3.2.5 version, they will have to either live with an
> older version of tooling (plugins) as well, that works with older Maven,
> or use a phonebook to order some pizza :)
>
> What we typically do, is:
> a- declare "minimum runtime maven prerequisite" -- today this is for ASF
> Maven core plugins 3.2.5 (in maven-plugin POM this is
> project/prerequisite/maven element)
> b- declare "minimum maven dependencies" -- this is usually same as
> "minimum runtime maven prerequisite" (these are the maven dependencies you
> build against)
> c- declare "minimum built time maven prerequisite" -- this is required
> maven version to build the plugin (or project), this is good to keep up to
> date, ie. I would use 3.6.3 or even 3.8.8 or so, and can be enforced using
> enforcer (along with Java build time version and Java byte code versions).
> d- strive to use up to date maven-plugin-plugin (and related dependencies,
> like maven-plugin-annotations)
>
> An example of this above (note: this is not ASF Maven Core plugin, but is
> a simple showcase as the plugin itself is simple. ASF Maven plugins have
> quite a deep POM parent-child hierarchy):
> a-
> https://github.com/eclipse/sisu.mojos/blob/084f21a04229cbf372d06243ce397b59b38167ae/pom.xml#L55-L57
> and
> https://github.com/eclipse/sisu.mojos/blob/084f21a04229cbf372d06243ce397b59b38167ae/pom.xml#L106
> b-
> https://github.com/eclipse/sisu.mojos/blob/084f21a04229cbf372d06243ce397b59b38167ae/pom.xml#L132-L155
> c-
> https://github.com/eclipse/sisu.mojos/blob/084f21a04229cbf372d06243ce397b59b38167ae/pom.xml#L132-L155
> and
> https://github.com/eclipse/sisu.mojos/blob/084f21a04229cbf372d06243ce397b59b38167ae/pom.xml#L233-L241
> d-
> https://github.com/eclipse/sisu.mojos/blob/084f21a04229cbf372d06243ce397b59b38167ae/pom.xml#L109
>
> Moreover, all "maven dependencies" (those in groupID "org.apache.maven",
> part of Maven) should be in "provided" scope (as they are provided by Maven
> itself at plugin runtime. But a more recent maven-plugin-plugin (reason why
> is recommended) will direct you, and warn if some scope is off.
>
> Finally, if you use plexus-utils, declare it explicitly, as starting with
> Maven 3.9.x plexus-utils is NOT auto-injected (provided) in the plugin
> classpath anymore.
>
> Something similar I attempted to jot down here:
> https://cwiki.apache.org/confluence/display/MAVEN/Notes+For+Maven+3.9.x+Plugin+Developers
>
> Another page, maybe not directly for you (targets Maven devs, but has
> useful information for plugin devs as well):
> https://cwiki.apache.org/confluence/display/MAVEN/Maven+Ecosystem+Cleanup
>
> All this above is for Maven plugins "in general", nothing in relation with
> "reporting", just a FYI.
>
> Now, this above is "ideal case", if things get more hairy (ie. plugin
> reaches to some internals of Maven, maybe not even meant to be as Public
> API, this may usually cause some breakage), solution MAY be to lift lower
> end of "compatibility" from 3.2.5 to something like 3.6.3 or so, if
> possible....
>
> HTH
> Tamas
>
>
>
>
>
> On Mon, Mar 20, 2023 at 7:04 PM Ryan Heaton <r...@webcohesion.com> wrote:
>
>> Hi.
>>
>> Apologies in advance if the dev list would have been a better place for
>> this question. I maintain some Maven plugins for the Enunciate project
>> <http://enunciate.webcohesion.com/> and wanted to update to the latest
>> versions of the Maven API. I have one specific question, and then a more
>> general question.
>>
>> My specific question is about the maven-reporting-api. Doing an artifact
>> search revealed version 3.1.x, so I assumed that was still compatible with
>> the latest Maven versions. But when I updated my plugin to use that API
>> version it broke when using Maven 3.x.x:
>>
>> [WARNING] An issue has occurred with enunciate-maven-plugin:2.15.0:docs
>> > report, skipping LinkageError Receiver class
>> > com.webcohesion.enunciate.mojo.DocsMojo does not define or inherit an
>> > implementation of the resolved method 'abstract void
>> > generate(org.codehaus.doxia.sink.Sink, java.util.Locale)' of interface
>> > org.apache.maven.reporting.MavenReport., please report an issue to Maven
>> > dev team.
>> >
>>
>> So do I just need to fix on maven-reporting-api version 3.0 and ignore the
>> deprecation warnings for e.g. org.codehaus.doxia.sink.Sink? If
>> maven-reporting-api 3.1.x is incompatible with Maven 3.x why wasn't it
>> given a major version release?
>>
>> So now the more general question: how do I know which versions of
>> artifacts
>> are the latest versions that are compatible with Maven 3.x?
>>
>> I've got all these specific dependencies:
>>
>>    - maven-plugin-api
>>    - maven-artifact
>>    - maven-compat
>>    - maven-filtering
>>    - maven-plugin-annotations
>>    - plexus-utils
>>    - plexus-interpolation
>>    - maven-reporting-api
>>
>> How do I know the most up-to-date version recipe?
>>
>> Thanks!
>>
>> -Ryan
>>
>

Reply via email to