-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Build] Define all MANIFEST.MF entries through the bnd-maven-plugin #517
Conversation
<bnd.instructions.additions><![CDATA[ | ||
Bundle-SymbolicName: org.apache.maven.resolver.transport.jdk | ||
Automatic-Module-Name: ${Bundle-SymbolicName} | ||
]]></bnd.instructions.additions> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it correct that from all the maven-resolver-transport-jdk
modules only maven-resolver-transport-jdk
is actually to be used and jdk-8
, jdk-11
and jdk-21
are only there fore technical reasons to create multi-release jars?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's right.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, thanks. Then I think it it not really necessary to create a Manifest for those specific bundles or at least it is not necessary to make sure the information is complete, isn't it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have now incorporated that and updated the resolver-transport-jdkX
modules.
b786302
to
ba1424a
Compare
ba1424a
to
99df1b0
Compare
and derive 'Bundle-SymbolicName' header from the artifactId where possible.
99df1b0
to
7fcbe52
Compare
I have now further enhanced this and added the Automatic-Module-Name by default for all modules (like in the 1.9.x variant of this in #518). Due to the naming unification this PR changes the
I hope this is acceptable? @gnodet and @cstamas from my POV this is ready and I think it would suit best to have this before my other changes. |
<Automatic-Module-Name>org.apache.maven.resolver.supplier</Automatic-Module-Name> | ||
<Bundle-SymbolicName>${Automatic-Module-Name}</Bundle-SymbolicName> | ||
<bnd.instructions.additions><![CDATA[ | ||
Bundle-SymbolicName: org.apache.maven.resolver.supplier |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the behaviour since maven-resolver-supplier-mvn3 and maven-resolver-supplier-mvn4 end up with the same symbolic name / module name ? Isn't that a problem ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
my "non-expert" opinion: IMO no, as only one can be used at one time, or in other words, I see no use case when you want both in the same container?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, that's OSGi, so it's supposed to support different versions of the same packages/services to be deployed in the same container...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@HannesWell is there any real OSGi use case ? like pax-url or something like that ? Or is that just to be able to use Maven inside Eclipse ?
More specifically, is there any use of OSGi services, or just the package wiring layer ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When using both in the same OSGi runtime it could indeed become a challenge and will probably depend on the runtime configuration how multiple bundles with same ID and version are handled.
If they had different version, e.g. aligned with the targeted maven version it wouldn't be a problem, but I don't think that's what you want and also what's suitable here.
Solutions could be to say that one should only use one of both or we add a corresponding name suffix like for the maven artifactId
?
I can implement it as you prefer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fwiw, the maven 4 based supplier is a bit off. It should now looks like
https://github.com/apache/maven/blob/master/maven-api-impl/src/test/java/org/apache/maven/internal/impl/standalone/RepositorySystemSupplier.java
That said, I don't think it's a good idea to tie a resolver jar so closely with maven private implementation classes... It should really be the opposite and the supplier should be provided by maven.
IIRC, those two suppliers are mostly for demos, right @cstamas ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That said, I don't think it's a good idea to tie a resolver jar so closely with maven private implementation classes... It should really be the opposite and the supplier should be provided by maven.
I have to say that I just learned the resolver last week from the nice demos (I new it exists and what it does longer before but have not worked with it) so my opinions are probably not that qualified.
But yes I understood the supplier as 'standalone' integration of the resolver with maven (as you say in the doc, in general the resolver can work with any kind of back-end and Maven is just one, probably the most prominent and driving one).
From that POV it is indeed a back-reference in the dependency graph to have maven-resolver-supplier in maven-resolver.
In maven there is already the maven-resolver-provider, would it make sense to merge the maven-resolver-supplier into that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@HannesWell are you aware of https://github.com/maveniverse/mima ? As it's maybe what you really need, as Resolver supplier provides really only the "basic experience". Also, see here:
https://issues.apache.org/jira/browse/MNG-8163?focusedCommentId=17856703&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17856703
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@HannesWell are you aware of https://github.com/maveniverse/mima ? As it's maybe what you really need, as Resolver supplier provides really only the "basic experience".
Not yet. Thanks for the hint. I'll have a closer look at it.
Yes that's an interesting discussion and I follow it. I just couldn't contribute anything useful (yet).
But after thinking again about this discussion, the argument that the supplier uses resolver-impl also made me wonder if moving that part to maven is really the right step.
But from your comment in that issue I assume that this is a bigger discussion that might only be solved in resolver 3.0.
Btw. should we have another issue or just PR to have different names for the bundles for resolver-supper for maven 3 and 4? Or do you think we should keep it as it is now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@HannesWell are you aware of https://github.com/maveniverse/mima ? As it's maybe what you really need, as Resolver supplier provides really only the "basic experience".
Not yet. Thanks for the hint. I'll have a closer look at it.
Yes that's an interesting discussion and I follow it. I just couldn't contribute anything useful (yet). But after thinking again about this discussion, the argument that the supplier uses resolver-impl also made me wonder if moving that part to maven is really the right step. But from your comment in that issue I assume that this is a bigger discussion that might only be solved in resolver 3.0.
Btw. should we have another issue or just PR to have different names for the bundles for resolver-supper for maven 3 and 4? Or do you think we should keep it as it is now?
We also need to take into account the Maven 4 API which kinda hides the resolver API... it may be easier to integrate in the near future.
Thank you @gnodet for your review and submitting this. |
and derive 'Bundle-SymbolicName' header from the artifactId where possible.
This is originally created for #516, but would probably also make #506 simpler.