Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jakarta.ee-community] Maven Versioning Rules

I think this is one of the things we'll need to revisit when we introduce module requirements.

Note that some APIs (e.g., JavaMail, JAF) are not designed to be reusable by multiple implementations, so the API module and the implementation module are tightly tied.  If the implementation module exposes no public APIs (e.g., JAF), is there any reason to expose the implementation APIs in a separate module instead of just including them in the API module?

In any event, you're right that we'll need to revise this recommendation once we have a better understanding of modules.

And remember that the main reason we have API modules is because developers said "I want to be able to compile against the standard API and know that I haven't referenced any implementation classes".  I know that API implementors often want a reusable definition of the standard APIs that they can depend on when building their own implementation, but that was a secondary reason for creating API jar files and was not possible in all cases.

Greg Wilkins wrote on 11/28/18 01:38 AM:
Bill et al,

I disagree with the following section:
	The implementation jar file typically includes all the classes from
	the API jar file, plus whatever implementation classes are needed
	to produce a complete runtime.

	In some cases the implementation jar file might contain only
	the implementation artifacts, and depend on the API jar file
	for the API definitions, although this is discouraged for
	standalone implementations.

Having API classes in implementation jars just invites duplicate classes and reduces flexibility.  A jar that is "standalone" in one deployment may well be used as component in another, plus there is no general reason that multiple versions of an API cannot be deployed in the same classloader scope.    These issues have always existed, but will only be made more acute by JPMS.

The policy should default to having separate jars for API and implementation, with perhaps a naming convention for aggregating both if a single jar is really needed.

regards





On Wed, 28 Nov 2018 at 01:57, Bill Shannon <bill.shannon@xxxxxxxxxx> wrote:
I sent this to the Specification Committee a few weeks ago and got no feedback,
which I assume means general support.  This seems like a good time to open up
the discussion in case there's anything we missed.

I've updated my Java EE "Maven Versioning Rules" document [1] to use the naming
scheme proposed by David Blevins [2].

Please review the Jakarta EE version [3] and send me feedback.

I'm primarily interested in whether I accurately represented the change from
the old naming rules to the new rules.  I'd prefer not to reopen the entire
discussion that led to the original set of rules.  However, there's lots of
other advice in the document that may need further updating for Jakarta EE
and we could discuss some of those issues.

Finally, while this is represented as "rules", these would clearly be guidelines
as far as EE4J projects are concerned, at least until any aspect of this becomes
a required part of a Jakarta EE specification.

Thanks.


[1] https://javaee.github.io/glassfish/wiki-archive/Maven%20Versioning%20Rules.html
[2]
https://docs.google.com/document/d/1pm8fjNusxxecoI-9M-eYvnoTkmZTMraQETN7OeVyMnA/edit#heading=h.ma7xbsxflh33
[3] https://wiki.eclipse.org/JakartaEE_Maven_Versioning_Rules
_______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-community


--


_______________________________________________
jakarta.ee-community mailing list
jakarta.ee-community@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-community


Back to the top