slachiewicz opened a new pull request, #926: URL: https://github.com/apache/maven-wagon/pull/926
Backport of #912, which I closed out saying "not for `wagon-3.x`", and #913 repeated that it "belongs to 4.0.0". This PR asks to change that call. The reason it was held back has not gone away — it is set out precisely below — but the cost of keeping 3.x structurally different from master has become the larger of the two. ### Why revisit it `plexus-component-metadata` and the javadoc-tag dialect it reads are now used nowhere else in the estate; this branch is the last consumer, and the generator is a build-time dependency on a toolchain nobody maintains. Meanwhile every fix that lands on master and needs to come back here now conflicts in the component declarations — this backport itself is the cheap case, at three conflicts, because it *is* the divergence. Later ones pay for it repeatedly. ### The break, precisely Seven provider jars stop shipping a generated `components.xml` and ship `META-INF/sisu/javax.inject.Named` instead. Between them that is the `file`, `ftp`/`ftps`/`ftph`, lightweight `http`/`https`, `scm`, `scp`/`sftp` and `scpexe` wagons, plus the known-hosts providers, the interactive user info and the two command executors. `wagon-http` (`http`, `https`) and `wagon-webdav-jackrabbit` (`dav`, `davs`, `dav+http`, `dav+https`) map one implementation onto several hints, so they keep their handwritten descriptors and are unaffected. `new DefaultPlexusContainer()` leaves `classPathScanning` at `off`. An embedder doing that reads descriptors only, and silently stops finding everything in the first list. Maven is not affected: `PlexusWagonProvider` does `lookup(Wagon.class, hint)` and Maven configures its container with index scanning. Two ways to price that in. Release the result as **3.6.0** rather than 3.5.4 with a release note — nothing has shipped off this line since 3.5.3, so the bump costs nothing and puts the change behind a minor. Or, if a maintenance line should not break embedders at all, hand-write descriptors for all nine providers: the annotations still replace the javadoc tags and the published metadata stays as it is today. I would take the first; the second is there if the vote goes the other way. ### The port itself Cherry-pick of 4af0905a. Twenty-six of the twenty-eight Java files came across identical to master; the two that differ (`WagonTestCase`, `HttpWagonTests`) differ only where 3.x already differed, and their container setup matches master exactly. The one structural difference: this line declared `plexus-component-metadata` in each provider POM rather than in the root, so it is removed from all ten of them and `sisu-maven-plugin` takes its place in the root build. The reasoning behind the non-mechanical parts — `@Singleton` on the two components Plexus scoped as singletons, `@Typed` on the five that Sisu would otherwise publish under extra roles, and the dropped `@plexus.configuration` defaults — is unchanged from #912 and repeated in the commit message. Verified: the (role, hint, implementation, instantiation-strategy) tuples generated by this branch before the change → identical to the new sisu index, module by module. Full reactor green, all 17 modules. Note that `verify` does not cover the ssh providers — the `no-ssh-tests` profile skips them — so the container-lookup evidence for the jsch and external wagons is the embedded-sshd tests under `-Dssh-tests`, which pass. *This change was created with AI assistance.* -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
