Maven reactor

23 views
Skip to first unread message

Henri Tremblay

unread,
Jul 12, 2022, 1:53:34 PM7/12/22
to lescastcodeurs
Bonjour les amis,

Je m'amuse avec Maven et je me suis dit que j'avais des gens qui connaissaient bien dans le coin. Je suis sensé aussi... mais là je suis perplexe.

Si je fais 
mvn -pl server package docker:build
les dépendances sont résolues dans le repo local et non à partir des modules du réacteur. C'est tannant.

Si je fais 
mvn -pl server -am package docker:build
je ne sais pas si les dépendances sont correctes mais ça ne marche pas vu que les autres modules ne sont pas de docker containers.

Si je fais
mvn -rf server package docker:build
ben... ça ne marche pas non plus. Les dépendances viennent du repo local à ma grande surprise. Et en plus, il faut vraiment que ce soit le dernier module sinon je vais devoir ajouter des -pl !after_server pour le calmer.

C'est un tantinet tannant. La seule solution que je vois pour l'instant c'est de changer l'approche et d'utiliser un profil qui fait le docker:build
mvn -p docker package

C'est normal? Sérieusement, ça commence à ressembler à un bogue maven (je suis sur 3.6.3 je crois, mais me semble que 3.8.x ne marchait pas plus).

Merci,
Henri


Olivier Lamy

unread,
Jul 12, 2022, 8:52:10 PM7/12/22
to lescast...@googlegroups.com
On Wed, 13 Jul 2022 at 03:53, Henri Tremblay <henri.t...@gmail.com> wrote:
Bonjour les amis,

Je m'amuse avec Maven et je me suis dit que j'avais des gens qui connaissaient bien dans le coin. Je suis sensé aussi... mais là je suis perplexe.

Si je fais 
mvn -pl server package docker:build
les dépendances sont résolues dans le repo local et non à partir des modules du réacteur. C'est tannant.

Si je fais 
mvn -pl server -am package docker:build
je ne sais pas si les dépendances sont correctes mais ça ne marche pas vu que les autres modules ne sont pas de docker containers.

oui avec -am tu ajoutes les dépendances du module server dans le reactor/build. 
Qu'entends-tu exactement par ça marche pas? ton docker container ne contient pas les bonnes versions des jars des autres modules?
si oui alors il faut voir si le plugin docker:build n'utilise pas en fait le repo local pour obtenir les jars au lieu du reactor (dans ce cas utilises install plutôt que package)
 

Si je fais
mvn -rf server package docker:build
ben... ça ne marche pas non plus. Les dépendances viennent du repo local à ma grande surprise. Et en plus, il faut vraiment que ce soit le dernier module sinon je vais devoir ajouter des -pl !after_server pour le calmer.

C'est un tantinet tannant. La seule solution que je vois pour l'instant c'est de changer l'approche et d'utiliser un profil qui fait le docker:build
mvn -p docker package

C'est normal? Sérieusement, ça commence à ressembler à un bogue maven (je suis sur 3.6.3 je crois, mais me semble que 3.8.x ne marchait pas plus).

ou du plugin docker (lequel utilises-tu? car il y en a beaucoup)
 

Merci,
Henri


--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "lescastcodeurs".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CADZL2%3Dvwe9WPF%2BEiyd6dUr1waDi5%2BdDS5cEavo8jUAG%2BHY5uew%40mail.gmail.com.


--
Olivier 

Matthieu Baechler

unread,
Jul 13, 2022, 3:42:03 AM7/13/22
to lescast...@googlegroups.com
Bonjour Henri,

Ton analyse est la même que la mienne. C'est très difficile de ne pas recourir à maven install. Dans la plupart des projets sur lesquels j'ai travaillé, mes collègues avaient tous jeter l'éponge sur le fait de récupérer les dépendances dans le reactor.

À ta place je configurerais le plugin docker dans un profil ou bien je l'associerais au goal package.

Je crois que c'est un problème qui doit être corrigé en maven 4.

-- Matthieu Baechler
 

Henri Tremblay

unread,
Jul 16, 2022, 12:49:48 AM7/16/22
to lescastcodeurs
Ça ne marche pas, car si tu mets docker:build, ça va vouloir faire ce goal sur tous les projets du -am.
Quant en fait je voudrais "package" pour tout le monde et "docker:build" pour le dernier projet

Au sujet du plugin, je parle de celui-https://github.com/fabric8io/docker-maven-plugin

Olivier Lamy

unread,
Jul 17, 2022, 6:51:41 AM7/17/22
to lescast...@googlegroups.com
On Sat, 16 Jul 2022 at 14:49, Henri Tremblay <henri.t...@gmail.com> wrote:
Ça ne marche pas, car si tu mets docker:build, ça va vouloir faire ce goal sur tous les projets du -am.
Quant en fait je voudrais "package" pour tout le monde et "docker:build" pour le dernier projet

si tu veux que cela s'execute par defaut dans la phase package il te faut le declarer explicitement ainsi dans le pom du module server

<plugin>
  <groupId>io.fabric8</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <configuration>
    ....
  </configuration>
  <executions>
    <execution>
      <id>default</id>
      <goals>
        <goal>build</goal>
      </goals>
      <phase>package</phase>
    </execution>
  </executions>
</plugin>

Normalement avec cela mvn package -pl :server -am fera aussi le docker:build dans le module server

 

Henri Tremblay

unread,
Jul 17, 2022, 10:27:14 PM7/17/22
to lescastcodeurs
Hum... Il y a un truc que je ne comprends pas.
La définition de docker-maven-plugin est sur le pom parent du parent du projet.
Donc tous les modules l'ont.

Et pourtant, il n'est pas déclenché sur un install.

Olivier Lamy

unread,
Jul 18, 2022, 2:28:17 AM7/18/22
to lescast...@googlegroups.com
On Mon, 18 Jul 2022 at 12:27, Henri Tremblay <henri.t...@gmail.com> wrote:
Hum... Il y a un truc que je ne comprends pas.
La définition de docker-maven-plugin est sur le pom parent du parent du projet.

qu'entends-tu par "La définition de docker-maven-plugin est sur le pom parent du parent du projet"?
Est-ce que l'execution du goal "build" est declaree?
ce plugin ne faisant pas partie du lifecycle s'il n'est pas declaree dans un tag <execution> il ne s'executera pas.
le mieux est de declarer ce plugin dans pluginManagement du parent pour assurer une coherence de version
puis dans le pom ou tu as besoin le mettre dans un tag <execution>
 
Reply all
Reply to author
Forward
0 new messages