vert-x3 / issues

Apache License 2.0
37 stars 7 forks source link

Provide Automatic-Module-Name attribute in MANIFEST.MF #524

Closed afloarea closed 1 year ago

afloarea commented 4 years ago

Feature Description

Provide Automatic-Module-Name attribute in MANIFEST.MF file.

Use cases

Provides a reliable module name, instead of using the name derived from the JAR file, without having to target Java 9+ and/or use module-info java/class file. This can be used until there is a module-info file.

Contribution

If this feature request were to be approved I would be happy to work on it.

I believe that this change would require some additional configuration in the pom.xml maven jar plugin, for example:


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifestEntries>
                <Automatic-Module-Name>io.vertx.core</Automatic-Module-Name>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

Naming Scheme

When choosing module names, these rules should be taken into consideration.

Table of automatic module names and their status:

Notes:

Core

Component Artifact id Automatic Module Name Status
Vertx core vertx-core io.vertx.core Merged

Web

Component Artifact id Automatic Module Name Status
Vertx web vertx-web io.vertx.web Merged
Vertx web client vertx-web-client io.vertx.web.client Merged
Vertx web common vertx-web-common io.vertx.web.common Merged
Vertx web OpenAPI vertx-web-openapi io.vertx.web.openapi Merged
Vertx web validation vertx-web-validation io.vertx.web.validation Merged
Vertx web templates vertx-web-templ-[x] io.vertx.web.template.[x] Merged
Vertx web API vertx-web-api-contract io.vertx.web.apicontract Merged
Vertx web API service vertx-web-api-service io.vertx.web.apiservice Merged
Web GraphQL Handler vertx-web-graphql io.vertx.web.graphql Merged
Web sstores vertx-web-sstore-[x] io.vertx.web.sstore.[x] Merged
Web Proxy vertx-web-proxy io.vertx.web.proxy Todo
Web OpenAPI Rtouer vertx-web-openapi-router io.vertx.web.openapi.router Todo

Data access

Component Artifact id Automatic Module Name Status
MongoDB client vertx-mongo-client io.vertx.client.mongo Merged
Redis client vertx-redis-client io.vertx.client.redis Merged
Cassandra client vertx-cassandra-client io.vertx.client.cassandra Merged
Common SQL interfaces vertx-sql-common N/A Merged
JDBC client vertx-jdbc-client io.vertx.client.jdbc Merged

Reactive SQL clients

Component Artifact id Automatic Module Name Status
SQL client vertx-sql-client io.vertx.client.sql Merged
DB2 client vertx-db2-client io.vertx.client.sql.db2 Merged
MSSQL client vertx-mssql-client io.vertx.client.sql.mssql Merged
MySQL client vertx-mysql-client io.vertx.client.sql.mysql Merged
PostgreSQL client vertx-pg-client io.vertx.client.sql.pg Merged
Templates vertx-client-sql-templates io.vertx.client.sql.templates Merged

Reactive

Component Artifact id Automatic Module Name Status
Reactive Streams vertx-reactive-streams io.vertx.reactivestreams Merged
Vertx Sync vertx-sync N/A -
Kotlin coroutines vertx-lang-kotlin-coroutines io.vertx.kotlin.coroutines Merged

Reactive Extensions

Component Artifact id Automatic Module Name Status
Rx code generator vertx-rx-gen io.vertx.rx.gen Postponed
RxJava code generator vertx-rx-java-gen io.vertx.rx.java.gen Postponed
RxJava API vertx-rx-java io.vertx.rx.java Postponed
RxJava2 Code Generator vertx-rx-java2-gen io.vertx.rx.java2.gen Postponed
RxJava2 API vertx-rx-java2 io.vertx.rx.java2 Postponed
JUnit 5 RxJava support vertx-junit5-rx-java io.vertx.junit5.rx.java Postponed
JUnit 5 RxJava2 support vertx-junit5-rx-java2 io.vertx.junit5.rx.java2 Postponed

Microservices

Component Artifact id Automatic Module Name Status
Circuit Breaker vertx-circuit-breaker io.vertx.circuitbreaker Merged

Vertx Config

Component Artifact id Automatic Module Name Status
Vertx Config vertx-config io.vertx.config Merged
Consul vertx-config-consul io.vertx.config.consul Merged
Git vertx-config-git io.vertx.config.git Merged
HOCON vertx-config-hocon io.vertx.config.hocon Merged
Kubernetes ConfigMap vertx-config-kubernetes-configmap io.vertx.config.configmap Merged
Redis vertx-config-redis io.vertx.config.redis Merged
Spring config server vertx-config-spring-config-server io.vertx.config.springconfigserver Merged
Vault vertx-config-vault io.vertx.config.vault Merged
YAML vertx-config-yaml io.vertx.config.yaml Merged
Zookeeper vertx-config-zookeeper io.vertx.config.zookeeper Merged

Vertx Service Discovery

Component Artifact id Automatic Module Name Status
Service Discovery vertx-service-discovery io.vertx.servicediscovery Merged
Consul Backend vertx-service-discovery-backend-consul io.vertx.servicediscovery.backend.consul Merged
Redis Backend vertx-service-discovery-backend-redis io.vertx.servicediscovery.backend.redis Merged
Zookeeper Backend vertx-service-discovery-backend-zookeeper io.vertx.servicediscovery.backend.zookeeper Merged
Consul Bridge vertx-service-discovery-bridge-consul io.vertx.servicediscovery.bridge.consul Merged
Docker links Bridge vertx-service-discovery-bridge-docker-links io.vertx.servicediscovery.bridge.dockerlinks Merged
Docker Bridge vertx-service-discovery-bridge-docker io.vertx.servicediscovery.bridge.docker Merged
Kubernetes Bridge vertx-service-discovery-bridge-kubernetes io.vertx.servicediscovery.bridge.kubernetes Merged
Zookeeper Bridge vertx-service-discovery-bridge-zookeeper io.vertx.servicediscovery.bridge.zookeeper Merged

Standards

Component Artifact id Automatic Module Name Status
Vertx OpenAPI vertx-openapi io.vertx.openapi Done
Vertx Json Schema vertx-json-schema io.vertx.jsonschema Todo
Vertx URI Template vertx-uri-temlate io.vertx.uritemplate Todo

HTTTP Proxy

Component Artifact id Automatic Module Name Status
Vertx Http Proxy vertx-http-proxy io.vertx.httpproxy Todo

MQTT

Component Artifact id Automatic Module Name Status
Vertx MQTT vertx-mqtt io.vertx.mqtt Merged

Authentication and Authorisation

Component Artifact id Automatic Module Name Status
Auth Common vertx-auth-common io.vertx.auth.common Merged
JDBC Auth vertx-auth-jdbc io.vertx.auth.jdbc Merged
JWT Auth vertx-auth-jwt io.vertx.auth.jwt Merged
JWT vertx-jwt N/A Artifact code merged into vertx-auth-common
LDAP vertx-auth-ldap io.vertx.auth.ldap Merged
Shiro Auth vertx-auth-shiro io.vertx.auth.shiro Merged
MongoDB Auth vertx-auth-mongo io.vertx.auth.mongo Merged
OAuth 2 vertx-auth-oauth2 Io.vertx.auth.oauth2 Merged
Properties vertx-auth-properties Io.vertx.auth.properties Merged
.htdigest Auth vertx-auth-htdigest io.vertx.auth.htdigest Merged
.htpasswd vertx-auth-htpasswd io.vertx.auth.htpasswd Merged
SQL Auth vertx-auth-sql io.vertx.auth.sql Merged
WebAuthN vertx-auth-webauthn io.vertx.auth.webauthn Merged

Messaging

Component Artifact id Automatic Module Name Status
AMQP Client vertx-amqp-client io.vertx.client.amqp Merged
STOMP vertx-stomp io.vertx.stomp Merged
RabbitMQ Client vertx-rabbitmq-client io.vertx.client.rabbitmq Merged
Vert.x Proton vertx-proton io.vertx.proton Merged

Integration

Component Artifact id Automatic Module Name Status
Kafka Client vertx-kafka-client io.vertx.client.kafka Merged
Mail Client vertx-mail-client io.vertx.client.mail Merged
Consul Client vertx-consul-client io.vertx.client.consul Merged

JCA Adaptor

Component Artifact id Automatic Module Name Status
JCA Adapter vertx-jca-adapter N/A -
JCA API vertx-jca-api N/A -

Event Bus Bridge

Component Artifact id Automatic Module Name Status
Common vertx-bridge-common io.vertx.eventbusbridge.common Merged
TCP Event Bus Bridge vertx-tcp-eventbus-bridge io.vertx.eventbusbridge.tcp Under discussion
Camel Bridge vertx-camel-bridge io.vertx.eventbusbridge.camel Under discussion

Devops

Component Artifact id Automatic Module Name Status
Dropwizard metrics vertx-dropwizard-metrics io.vertx.metrics.dropwizard Merged
Micrometer vertx-micrometer-metrics io.vertx.metrics.micrometer Merged
Health Check vertx-health-check io.vertx.healthcheck Merged
Shell vertx-shell io.vertx.shell Merged
Docker vertx-stack-docker N/A -
Stack Manager vertx-stack-manager N/A -

Tracing

Component Artifact id Automatic Module Name Status
Zipkin vertx-zipkin io.vertx.tracing.zipkin Merged
Opentracing vertx-opentracing io.vertx.tracing.opentracing Merged

Testing

Component Artifact id Automatic Module Name Status
Vertx Unit vertx-unit io.vertx.testing.unit Merged
JUnit 5 vertx-junit5 io.vertx.testing.junit5 Merged

Clustering

Component Artifact id Automatic Module Name Status
Hazelcast vertx-hazelcast io.vertx.clustermanager.hazelcast Merged
Infinispan vertx-infinispan io.vertx.clustermanager.infinispan Merged
Apache Ignite vertx-ignite io.vertx.clustermanager.ignite Merged
Zookeeper vertx-zookeeper io.vertx.clustermanager.zookeeper Merged

Services

Component Artifact id Automatic Module Name Status
Service Proxies vertx-service-proxy io.vertx.serviceproxy Merged
Service Factories vertx-service-factory N/A -
HTTP Service Factory vertx-http-service-factory N/A -
SockJs Service Proxy vertx-sockjs-service-proxy io.vertx.serviceproxy.sockjs Merged
Maven Service Factory vertx-maven-service-factory N/A -

gRPC

Component Artifact id Automatic Module Name Status
gRPC vertx-grpc io.vertx.grpc Merged
gRPC vertx-grpc-client io.vertx.grpc.client Done
gRPC vertx-grpc-server io.vertx.grpc.server Done
gRPC vertx-grpc-common io.vertx.grpc.common Done
gRPC vertx-grpc-context-storage N/A -
gRPC protoc plugin vertx-grpc-protoc-plugin N/A -

Internal Magic

Component Artifact id Automatic Module Name Status
Codegen vertx-codegen io.vertx.codegen Merged
Docgen vertx-docgen N/A -
Codetrans vertx-codetrans N/A -
Bridge Common vertx-bridge-common io.vertx.eventbusbridge.common Merged
Distro Stack Manager vertx-stack-manager io.vertx.stack.manager N/A

Languages

Component Artifact id Automatic Module Name Status
Groovy lang vertx-lang-groovy N/A N/A

Kotlin

Component Artifact id Automatic Module Name Status
Kotlin gen vertx-lang-kotlin-gen io.vertx.kotlin.gen Under discussion
Kotling lang vertx-lang-kotlin io.vertx.kotlin Merged

Scala

Component Artifact id Automatic Module Name Status
Scala lang codegen vertx-lang-scala-codegen N/A -
Scala language support vertx-lang-scala_2.13 N/A -
vietj commented 4 years ago

Merged all submitted PR's @afloarea

afloarea commented 4 years ago

@vietj I have raised PRs for most of the approved names.

The ones missing are for kotlin. I have a question about that: should I only add for kotlin lang and coroutines? or should I wait for the kotlin.gen one as well. Also, what about the vertx-kotlin-compiler? I did not add it to the table but I noticed it in the repository.

Also, the vertx-codegen was a bit different than the others because it's using the assembly plugin so I did not use the parent pom there (FYI).

Apart from these, I believe there are no other approved names, only postponed and marked as 'under discussion' or 'Pending'.

vietj commented 4 years ago

for kotlin I think for now indeed we only add kotlin lang and coroutines indeed - I merged all open PR's

vietj commented 4 years ago

kotlin done

afloarea commented 4 years ago

@vietj since all the approved names have merged PRs, what's next? I assume this issue will remain open until the postponed/under discussion names are resolved too, right?

Also, if you want, I could also have a look at merging the vertx-sql-common into vertx-jdbc-client.

vietj commented 4 years ago

for sql-common, I will have a look soon.

besides, I think what we need now is to capture the current state in a wiki page and write some documentation that defines the expectations and possibly at some point we need an how-to with JPMS for Vert.x 4 using automatic module names (https://how-to.vertx.io) that could be based on 4.0.0-milestone5 (cc @jponge)

vietj commented 4 years ago

I will create a wiki page with the current names soon I think in the vertx wiki

vietj commented 4 years ago

Here is the wiki page https://github.com/vert-x3/wiki/wiki/JPMS

vietj commented 4 years ago

I will close this issue for Vert.x 4

pmlopes commented 3 years ago

@vietj I've just noticed that as we missed vertx-bridge-common in web a jpms application will fail to build if it attempts to configure the eventbus sockjs bridge as the classes are not made public.

pmlopes commented 3 years ago

I've re-open it because we faced a issue with:

https://github.com/vert-x3/vertx-bridge-common/pull/6

Can we settle on a name for it?

io.vertx.bridge.common or io.vertx.eventbus.bridge.common ?

overshareware commented 3 years ago

Is there any information on the status of the rxjava packages? They're listed as 'postponed' but I can't find any more information on why or if that will be resolved?

vietj commented 3 years ago

I don't remember why we didn't do it for rxjava

vietj commented 3 years ago

I'd like to remember the reason and get the context

vietj commented 1 year ago

rather

On Tue, Feb 28, 2023 at 8:02 PM Adrian Floarea @.***> wrote:

@vietj https://github.com/vietj Do you think it is worth adding automatic module names for the newer projects? I can raise some PRs if so.

  • Web Proxy[Tech Preview] (vertx-web-proxy) -> io.verx.web.proxy
  • URI Template[Tech Preview] (vertx-uri-template) -> io.vertx.uri.template
  • Json Schema[Tech Preview] (vertx-json-schema) -> io.vertx.json.schema
  • Http Proxy[Tech Preview] (vertx-http-proxy) -> io.vertx.http.proxy

Regarding rxjava, I unfortunately do not remember why it was postponed.

— Reply to this email directly, view it on GitHub https://github.com/vert-x3/issues/issues/524#issuecomment-1448706053, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABXDCWEN6NSANIYSF2KWM3WZZDVHANCNFSM4MF7SADQ . You are receiving this because you were mentioned.Message ID: @.***>

vietj commented 1 year ago

@afloarea can you provide PR soon ? we will release 4.4 tomorrow

we should also have io.vertx.web.openapi.router

I added Todo to the initial list in the issue.

vietj commented 1 year ago

I'm closing this issue, I moved the content to the vertx wiki https://github.com/eclipse-vertx/vert.x/wiki/Automatic-Module-Names

vietj commented 1 year ago

Actually I've done them myself for 4.4 as it was o the critical path of the release.

On Tue, Feb 28, 2023 at 10:02 PM Julien Viet @.***> wrote:

rather

  • io.vertx.web.proxy
  • io.vertx.uritemplate
  • io.vertx.jsonschema
  • io.vertx.httpproxy

On Tue, Feb 28, 2023 at 8:02 PM Adrian Floarea @.***> wrote:

@vietj https://github.com/vietj Do you think it is worth adding automatic module names for the newer projects? I can raise some PRs if so.

  • Web Proxy[Tech Preview] (vertx-web-proxy) -> io.verx.web.proxy
  • URI Template[Tech Preview] (vertx-uri-template) -> io.vertx.uri.template
  • Json Schema[Tech Preview] (vertx-json-schema) -> io.vertx.json.schema
  • Http Proxy[Tech Preview] (vertx-http-proxy) -> io.vertx.http.proxy

Regarding rxjava, I unfortunately do not remember why it was postponed.

— Reply to this email directly, view it on GitHub https://github.com/vert-x3/issues/issues/524#issuecomment-1448706053, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABXDCWEN6NSANIYSF2KWM3WZZDVHANCNFSM4MF7SADQ . You are receiving this because you were mentioned.Message ID: @.***>