Zaczynam dostać się do modułowości Java i zastanawiam się, czy projekt wielokrotnego modułu powinien być podzielony na projekty pod-gradle. Jeśli tak jest, czy tak, jak wyglądałaby struktura katalogów? Widziałem pewne sprzeczne przykłady struktur dla projektów nieorganicznych, takich jak:

reverse/dns/module/module-info.java 
                ./packages..
reverse/dns/module/module-info.java 
                ./packages..

I

reverse.dns.module/
            module-info.java // module-info is in the root directory and its name corresponds to parent folder
            reverse/dns/module/packages..

Czy wyglądałoby to na coś takiego?

Naprawdę chciałbym wiedzieć, jak strukturować projekt gradle, gdybym miał mieć dwa moduły. Zamierzam używać JLINK również do tworzenia obrazów, jeśli to sprzeczne z czymkolwiek.

4
joshpetit 22 listopad 2020, 16:19

1 odpowiedź

Najlepsza odpowiedź

Poprosiłem o zmianę tego pytania:

Używam gradle i wtyczki JLINK i masz aplikację, którą chcę podzielić na dwa moduły, czy moduły mają być w katalogu SRC / MAVA / JAVA, czy powinien zostać zrefulistyczny do SRC / MOD1 / i SRC / MOD2 ? Kolejne pytanie, które pochodzi z tego testowania i gdzie umieścić klasy testów Junit. Zastanawiam się głównie na temat struktury katalogowej tego wszystkiego. Dzięki!

Do Nick Maiorano i otrzymał tę odpowiedź:

W przypadku pierwszego pytania, kompilator Java i Runtime nie mają żadnej opinii na ten temat. Obsługują wszystkie typy struktur katalogów. Ale Redaktorzy Java, takich jak Intellij i Eclipse Siła, aby mieć oddzielne korzenie źródłowe dla każdego modułu. Jeśli planujesz posiadanie różnych zespołów utrzymujących własne moduły, trzeba będzie musiał mieć oddzielne korzenie i użyjesz swoich modułów, podobnie jak biblioteka 3RD partii z zależnościami modułów przez słoik lub plik JMOD. W przeciwnym razie możesz mieć różne moduły pod jednym źródłem, ale walczysz z obsługą modułu ECLIPSE / Intellij (ale jest to możliwe).

Twoje drugie pytanie jest znacznie łatwiejsze: klasy badań jednostkowych powinny znajdować się w tym samym module, co ich badani. Powinni mieć dostęp do każdej klasy w module, więc ma sens, że są częścią modułu. Powinny być w oddzielnym katalogu, ale ta sama nazwa pakietu jako ich przedmioty testowe (tak, że nie są zablokowane z dostępu do prywatnych metod pakietu).

Pasuje do tego sposobu, w jaki postanowiłem architekta aplikacji, mając dwa odrębne podtynki, każdy z nich posiadający własny katalog SRC / Main / Java. Moja struktura końcowa katalog wygląda tak:

wit-core/
├── build.gradle
├── core.vim
└── src
    ├── main
    │   └── java
    │       ├── dev
    │       │   └── joshpetit
    │       │       └── wit
    │       │           └── core
    │       │               ├── base
    │       │               ├── interpret
    │       │               └── model
    │       └── module-info.java
    └── test
        └── java
            └── dev
                └── joshpetit
                    └── wit
                        └── core
                            ├── base
                            └── utils
wit-gui/
├── build.gradle
├── Session.vim
└── src
    ├── main
    │   └── java
    │       ├── dev
    │       │   └── joshpetit
    │       │       └── wit
    │       │           └── gui
    │       │               └── launcher
    │       └── module-info.java
    └── test
        └── java
            └── dev
                └── joshpetit
                    └── wit
                        └── gui
                            └── launcer

Dużo podziękowania dla ludzi, którzy przeanalizowali to pytanie ze mną!

Jeśli ktoś nadal zastanawia się nad tym, polecam śledzić rady @ Francisccomatea i odwołuje się do Projekt Junit's Struktura.

0
joshpetit 27 listopad 2020, 15:13