Domanda

Quali sono le possibilità di imporre restrizioni sulle dipendenze dei pacchetti in un sistema di generazione Java? Ad esempio, la classe myapp.server.bl.Customer non dovrebbe fare riferimento al pacchetto myapp.client.ui.customlayout . Sono interessato a soluzioni basate su Ant o specifiche IDE.

Vorrei ricevere un messaggio di errore nella build che indica che una regola di dipendenza del pacchetto (personalizzata) è stata violata e la build è stata interrotta. Vorrei anche mantenere le dipendenze in un elenco, preferibilmente in un file di testo, al di fuori degli script Ant o dei file di progetto IDE.

(Non conosco Maven ma l'ho letto qui ha un supporto migliore per la gestione delle dipendenze dei moduli)

È stato utile?

Soluzione

Credo che Checkstyle abbia un controllo per questo. Si chiama Import Control

Altri suggerimenti

È possibile configurare i progetti Eclipse per specificare le Regole di accesso. Le regole di accesso possono specificare " Proibito " ;, " Scoraggiato " ;, & " Accessibile " livelli tutti con regole jolly. È quindi possibile configurare le violazioni di Scoraggiato o Proibito affinché vengano contrassegnate come avvisi o errori durante le compilazioni.

Tipo di vecchio articolo sull'idea (i dettagli potrebbero non essere aggiornati):

http://www.eclipsezone.com/eclipse/forums/t53736.html

Se stai utilizzando i plug-in Eclipse (o OSGi), il " pubblico " parti del plugin / modulo sono esplicitamente definite e questo fa parte del modello.

ivy sembra una buona soluzione per il tuo problema (se stai usando la formica). Ivy è il componente di gestione delle dipendenze ufficiale di Ant e quindi si integra perfettamente con la formica. È in grado di risolvere dipendenze, gestire conflitti, creare esclusioni e così via.

Utilizza una semplice struttura XML per descrivere le dipendenze ed è più facile da usare rispetto a Maven, perché cerca solo di risolvere i problemi di risoluzione delle dipendenze.

Dalla homepage di Ivy:

Ivy è uno strumento per gestire (registrare, tracciare, risolvere e riferire) le dipendenze del progetto. È caratterizzato da quanto segue:

  1. flessibilità e configurabilità - Ivy è essenzialmente indipendente dal processo e non è legata ad alcuna metodologia o struttura. Fornisce invece la flessibilità e la configurabilità necessarie per adattarsi a una vasta gamma di processi di gestione e creazione delle dipendenze.
  2. stretta integrazione con Apache Ant - sebbene disponibile come strumento autonomo, Ivy funziona particolarmente bene con Apache Ant fornendo una serie di potenti attività Ant che vanno dalla risoluzione delle dipendenze alla segnalazione e pubblicazione delle dipendenze.

Per le soluzioni specifiche IDE, IntelliJ IDEA ha uno strumento di analisi delle dipendenze che consente di definire anche dipendenze non valide. http://www.jetbrains.com/idea/webhelp2/dependency- validazione-dialog.html

La violazione della dipendenza verrà mostrata sia durante la compilazione che durante la modifica, mentre si modifica la classe dipendente (come strisce di errore / avviso nella barra degli errori sul lato destro).

È possibile ottenere ancora più automazione con il server di build TeamCity di JetBrains, che può eseguire build di ispezione e segnalare i controlli configurati sopra.

Per un'altra soluzione indipendente IDE, AspectJ può essere utilizzato per dichiarare dipendenze non valide (e integrare il passaggio nel processo di generazione, al fine di ottenere informazioni di avviso / errore per i problemi).

Eclipse ha il supporto per questo tramite le proprietà del percorso di costruzione / proprietà jar. Penso che possa funzionare solo oltre i confini del vaso / progetto.

Forse Ciclo di classi può essere utilizzato: http://classycle.sourceforge.net/ddf.html

È possibile utilizzare più moduli in IDEA o Maven o più progetti in Eclipse e Gradle. Il concetto è lo stesso in tutti i casi.

Un'interpretazione banale sarebbe un modulo per myapp.server.bl e un altro per myapp.client.ui.customlayout senza dipendenze del tempo di compilazione tra i due. Ora qualsiasi tentativo di compilare il codice o il completamento del codice con il modulo / progetto opposto fallirà come desiderato.

Per verificare l'ampiezza del problema, un utile punto di partenza per IntelliJ IDEA è Analisi delle dipendenze :

http://www.jetbrains.com/idea/webhelp/analyzing -dependencies.html

Da quell'articolo puoi vedere come eseguire e agire sull'analisi delle dipendenze per il tuo progetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top