/ / Drawbridging klient, zdieľal serverové balíky v jazyku Java - java, ant, client-server, classpath

Drawbridging klient, zdieľal serverové balíky v jazyku Java - java, ant, client-server, classpath

Mám komplexný projekt Java, ktorý sa v konečnom dôsledku znižuje na 3 hlavné balíky:

com.myapp.client --> client-side classes
com.myapp.shared --> client- and server-side utility classes
com.myapp.server --> server-side classes

Chcel by som napísať Antovskú úlohu, ktorá kontroluje, že nie com.myapp.client triedy sa zobrazujú ako závislosť pre com.myapp.server triedy a naopak. Tento koncept nazývam "vzájomné prepojenie", pretože ste umiestnili ťažný mostík medzi klientom a serverovým kódom. Ant úloha by zlyhala vytvorenie, ak sa nájdu takéto porušujúce závislosti.

Pre život mňa nemôžem prísť na to, ako to urobiť. Prednostne existuje niečo, čo už existuje, ale Google sa nič nevrátil.

Krátko pred existujúcim riešením s otvoreným zdrojovým kódom, mojím ďalším odhadom by bolo previesť všetky triedy klienta a skontrolovať ich importy pre triedy serverov; ale podľa túto otázku SO kompilátor jazyka Java odmieta importované referencie v čase kompilácie.

Takže som tu v strate, akékoľvek nápady? Vďaka vopred!

odpovede:

0 pre odpoveď č. 1

Ako Java bytecode odkazuje na triedy podľa ich plne kvalifikovaných mien, malo by to byť celkom uskutočniteľné (ale nie ľahké), s využitím knižnice BCEL alebo ASM.

Myslím si však, že táto otázka má celkom rozlišovaciu spôsobilosť X-Y zvoniť, čo znamená, že sa snažíte vyriešiť problémproblém, ktorý je v skutočnosti príznakom koreňovej príčiny, ktorú by ste mali riešiť, v tomto prípade pravdepodobne správnym rozdelením vášho kódu, tak ako už Brian Roach navrhol.


0 pre odpoveď č. 2

AntContrib VerifyDesign je to presne to, čo som hľadal. Ďakujem!