Am o problemă la reconcilierea construirii unui proiect pentru a fi utilizat într-un server de aplicații și pentru a fi utilizat ca aplicație autonomă.
Pentru a oferi un context general simplificat, să spunem că am trei proiecte A, B, C.
Proiectul A depinde de Proiectul B, care depinde de Proiectul C.
Proiectul C are o dependență X care este marcată ca furnizată, deoarece era de așteptat să fie disponibilă ca bibliotecă JEE într-un server de aplicații, de exemplu. adică jms.jar.
Deci, dacă efectuez o construcție de asamblare a Proiectului A, primesc toate dependențele tranzitive cu excepția celor marcate ca fiind furnizate conform așteptărilor.
Acum am un nou scenariu de implementare în care Proiectul A trebuie utilizat într-un mediu autonom, adică în afara unui server de aplicații.
Deci acum am nevoie ca jms jar să fie o dependență de compilare. Înseamnă asta că ar trebui să adaug în mod explicit o dependență de compilare pentru X în Proiectul A? Acest lucru nu încalcă Legea lui Demeter, adică nu vorbiți cu străini, în sensul că Proiectul A nu ar trebui să știe în mod explicit despre Proiectul C, ci doar despre Proiectul B?
Acesta este un exemplu simplu, dar în realitate am mai multe dependențe care au fost marcate ca furnizate, dar acum trebuie să fie dependențe de compilare sau de rulare, astfel încât să ajungă în artefactul produs de pluginul de asamblare Maven.
Este aceasta o problemă fundamentală cu Maven sau nu folosesc instrumentele corect?
Multumesc anticipat pentru orice indrumare.