Maven - budowanie projektu z plikami sąsiedniego modułu

0

Jest następująca struktura projektów w Mavenie:

parent-project
  - common-api
  - module-a
  - module-b (wymaga common-api)
  - module-c (wymaga common-api)

Czy jest to możliwe, aby z poziomu projektu module-c dodać zależność common-api w ten sposób, aby budując module-c poleceniem mvn compile skompilować i dołączyć automatycznie pliki z common-api bez potrzeby wcześniejszej instalacji tej zależności do lokalnego repozytorium?

Chyba jedyne rozwiązanie to z poziomu parent-project wywołać:

mvn compile -pl :module-c -am

Ale czy w CI/CD będzie to takie proste? Lepiej, żeby z poziomu konkretnego modułu dało się wywołać mvn compile i żeby automatycznie dołączyć kod z common-api. Chodzi o to, żeby nie trzeba było budować całego projektu, jeśli zmiana jest tylko w jednym i żeby nie trzeba było tworzyć repozytorium w CI/CD.

3

Nie da się teraz, ale ma się dać w Maven 4.

Jak bardzo chcesz takie coś to przerzuć się na Gradle.

2

Nie chce mi się wierzyć, że się nie da, ale może nie zrozumiałem istoty problemu.

Testowo utwórz sobie ${project.build.directory}/generated-sources/MojTest.java i zobacz czy Ci się kompiluje ten MojTest przy mvn compile dla module-C.

Jeśli tak, to:

  1. https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference - przed fazą "compile" jest kilka innych faz, gdzie można podpiąć wykonanie pluginów.
  2. Jednym z takich pluginów jest https://maven.apache.org/plugins/maven-resources-plugin/copy-resources-mojo.html
  3. Możesz podłączyć kopiowanie zasobów ( z tego modułu common-api) pod generate-sources
  4. Faza "compile" powinna "zobaczyć" w generated-sources, te skopiowane źródła z common-api

1 użytkowników online, w tym zalogowanych: 0, gości: 1