jetty / jetty.project

Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more
https://eclipse.dev/jetty
Other
3.88k stars 1.91k forks source link

External jars that must be converted to JPMS #2989

Closed sbordet closed 4 years ago

sbordet commented 6 years ago

Jetty has a number of dependencies on external jars that needs to be converted to JPMS before Jetty itself can be converted to proper JPMS modules.

sbordet commented 6 years ago

See #2978.

sbordet commented 6 years ago

javax.servlet:javax.servlet-api

See eclipse-ee4j/servlet-api#201.

sbordet commented 6 years ago

org.conscrypt:conscrypt-openjdk-uber

See google/conscrypt#554.

sbordet commented 6 years ago

javax.mail:javax.mail-api

This has been published to Maven Central by Oracle, but without JPMS metadata.

See https://github.com/eclipse-ee4j/javamail - unfortunately not yet published to Maven Central, although there appear to be JPMS metadata (mailapi/src/main/java/module-info.java).

joakime commented 6 years ago

javax.websocket:websocket-api

See eclipse-ee4j/websocket-api#260

joakime commented 6 years ago

Keep in mind that the JPMS names for eclipse-ee4j jars are likely to be changed en-masse to start with jakarta.* in the future.

joakime commented 6 years ago

Ugh, java.mail requires java.desktop, wonder how that will work on headless JVMs?

joakime commented 6 years ago

The eclipse-ee4j module naming effort:

sbordet commented 6 years ago

javax.security.auth.message:javax.security.auth.message-api.

See https://github.com/eclipse-ee4j/jaspic

The module name (see the project's pom.xml file) has been defined as java.security.auth.message but not released yet to Maven Central.

sbordet commented 6 years ago

com.github.jnr:jnr-unixsocket

See jnr/jnr-unixsocket#61

cowwoc commented 5 years ago

I believe that https://github.com/eclipse-ee4j/servlet-api/issues/201 is fixed. You should be able to use the artifact that was released 6 days ago.

joakime commented 5 years ago

The file referenced by @cowwoc - https://search.maven.org/artifact/jakarta.servlet/jakarta.servlet-api/4.0.2/jar

The Jakarta Servlet API 4.0.2 artifact is missing the following content (that is present in the jetty-servlet-api-4.0.2.jar) which is necessary for JPMS.

javax/servlet/catalog.xml
javax/servlet/resources/
javax/servlet/resources/datatypes.dtd
javax/servlet/resources/j2ee_1_4.xsd
javax/servlet/resources/j2ee_web_services_1_1.xsd
javax/servlet/resources/j2ee_web_services_client_1_1.xsd
javax/servlet/resources/javaee_5.xsd
javax/servlet/resources/javaee_6.xsd
javax/servlet/resources/javaee_7.xsd
javax/servlet/resources/javaee_8.xsd
javax/servlet/resources/javaee_web_services_1_2.xsd
javax/servlet/resources/javaee_web_services_1_3.xsd
javax/servlet/resources/javaee_web_services_1_4.xsd
javax/servlet/resources/javaee_web_services_client_1_2.xsd
javax/servlet/resources/javaee_web_services_client_1_3.xsd
javax/servlet/resources/javaee_web_services_client_1_4.xsd
javax/servlet/resources/permissions_7.xsd
javax/servlet/resources/web-app_2_2.dtd
javax/servlet/resources/web-app_2_3.dtd
javax/servlet/resources/web-app_2_4.xsd
javax/servlet/resources/web-app_2_5.xsd
javax/servlet/resources/web-app_3_0.xsd
javax/servlet/resources/web-app_3_1.xsd
javax/servlet/resources/web-app_4_0.xsd
javax/servlet/resources/web-common_3_0.xsd
javax/servlet/resources/web-common_3_1.xsd
javax/servlet/resources/web-common_4_0.xsd
javax/servlet/resources/web-fragment_3_0.xsd
javax/servlet/resources/web-fragment_3_1.xsd
javax/servlet/resources/web-fragment_4_0.xsd
javax/servlet/resources/XMLSchema.dtd
javax/servlet/resources/xml.xsd
cowwoc commented 5 years ago

@joakime Is there a ticket tracking this problem on Jakarta's side?

joakime commented 5 years ago

@cowwoc see https://github.com/eclipse-ee4j/servlet-api/issues/1

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has been a full year without activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 4 years ago

This issue has been closed due to it having no activity.

bowbahdoe commented 1 year ago

Re-opening to ask if this work is complete or not

sbordet commented 1 year ago

@bowbahdoe with EE 10, I believe all spec jars have a proper module-info.

Out of curiosity, do you use JPMS? If so, can you detail how?

bowbahdoe commented 1 year ago

do you use JPMS? If so, can you detail how?

I'm gonna give a pretty annoying answer to this I think.

Yeah, I use modules - but mostly because i write up little libraries. With few or zero dependencies there is no reason not to have a module-info.

I have some thoughts about the jlink/jpackage "workflow", how that could be part of a simpler overall workflow for the ecosystem writ. large, how it seems like the leyden work is going to want module descriptors, and I do like running jlink and du -sh on my small toy projects and seeing 20-30mb. Feels clean.

But, professionally I've spent most of my JVM time in Clojure. The clojure world does not care about modules. I am very used to zipping everything into an uberjar and putting that uberjar in a docker image with the full jdk.

...does that make sense?