Hi Tamás, great to hear from you again. Thanks so much for your help. That PR is very helpful! A few questions:
* The TODOs say that having a dependency on the `maven-install-plugin` and `maven-deploy-plugin` is wrong, but I can't figure out why? I currently have those dependencies declared because I'm extending them to install/deploy Enunciate artifacts. Is there a better way to do that than extending those plugins? Is it just generally bad practice to extend other plugins? * (Possibly related to above item above) One of the deprecations is complaining about an auto-injection of the `org.apache.maven.artifact.repository.ArtifactRepository` pojo into one of my plugins and (I think) telling me I should use `org.eclipse.aether.RepositorySystemSession` instead. (The original code was lifted from the `maven-deploy-plugin` at the time.) Is there any documentation on how to use the Maven API to install/deploy artifacts using the "correct" components? * Are there any guides on how to migrate off maven-compat? Thanks again- -Ryan On Mon, Mar 20, 2023 at 2:28 PM Tamás Cservenák <ta...@cservenak.net> wrote: > 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 > >> > > >