Ho un progetto che ha un'API pubblica e un codice interno.
La parte pubblica è pubblicata su MavenCentral.
Ho pensato di creare un pacchetto ciascuno, ma tutto dal pacchetto "interno" a cui è necessario accedere dal pacchetto "api" deve essere pubblico, quindi disponibile dal POV dell'utente finale.
Attualmente, ciò che viene fatto è che la parte API è un progetto Gradle e la parte "interna" è un sottoprogetto del progetto API. In questo modo, se si importa l'API, Gradle conosce la dipendenza tra entrambi, ma non darà accesso al codice interno. Fin qui, tutto bene.
Il problema è con la pubblicazione su MavenCentral - viene pubblicato solo il progetto root.
Quindi posso:
- Pubblica i sottoprogetti su MavenCentral - ma sono interni, quindi è strano pubblicarli!
- Raggruppa tutto in un singolo progetto e usa i pacchetti Java - ma qualcosa a cui è necessario accedere da un pacchetto a un altro è quindi parte dell'API pubblica (% parola chiave% di%) quindi sto esponendo parte delle cose interne ( ma non molto)
- Raggruppa tutto in un unico pacchetto, così posso usare
public
livelli di accessibilità - ma è solo un po 'caotico ...
Che cosa faresti per risolvere questo problema? C'è anche un altro modo per farlo?
Ho sentito parlare di Jigsaw Modules in Java 9, ma non posso usarli (la lib deve essere compatibile con Android, quindi Android 8 al massimo)