Je suppose que vous avez vérifié que tout mécanisme que vous pourriez utiliser pour distribuer ces bocaux serait conforme aux licences pertinentes. Si tel était le cas, il semblerait que les créateurs des pots ne seraient pas en mesure de fournir une distribution officielle de Maven, donc votre meilleure option serait de faire pression pour qu'ils le fassent. Mais sinon, et pourtant pour une raison quelconque, ils vous permettront de distribuer le pot (soit par le clonage de votre repo, ou via un rapport Maven séparé que vous maintenez):
Il existe plusieurs façons. Je donne la préférence aux approches qui ne pas mettre les pots dans le repo git.
publier un Maven repo
Il est donc possible d'accueillir une prise en pension destiné au public et servir les objets de cette façon. Le pom peut ajouter votre repo orienté public à la construction, de sorte que ceux qui clonent peuvent construire sans avoir à exécuter de commandes spéciales.
L'exécution de votre propre dépôt n'est pas très difficile. Les versions OSS de Nexus ou Artifactory jFrog seraient probablement parfaitement capables. Mais, si nous supposons que les auteurs refusent de publier leurs propres fichiers via Maven, ils ne veulent pas les distribuer de cette façon, alors il n'y a aucune raison de passer beaucoup de temps sur les détails de cette option. Alors en route ...
distribution dans la distribution Git repo
Je suppose que cela est ce que vous faites, mais encore une fois si Maven viole la licence que je ferais que vous partagez les cheveux de la bonne façon de penser que cette ne le fait pas. Donc, la question serait de savoir comment amener Maven à traiter les artefacts distribués de cette manière, et encore une fois, il y a quelques options. Votre objection à mettre les pots dans le dépôt local est que cela nécessiterait des commandes supplémentaires de l'utilisateur; mais en fait cela pourrait être automatisé dans la phase de "validation" de la construction. La liaison install:install-file
à la phase de validation devrait fonctionner.
Alternativement, votre objection à l'utilisation de la portée system
est que le fichier n'est pas copié dans la guerre finale. Vous pourriez être en mesure d'utiliser le plugin de dépendance pour forcer le problème, mais je ne suis pas sûr de cela. Ce dont je suis sûr, c'est que vous pouvez traiter le répertoire contenant les fichiers jar comme une ressource web avec une configuration appropriée dans le plugin war. (Vous voudriez qu'il soit traité comme non filtrée et à la carte dans le dossier WEB-INF/lib
.)
Dans tous les cas, si vous distribuez des pots (ou d'autres grands binaires) dans le git, je vous recommande fortement regardez git lfs
. Cela nécessitera une configuration unique par chacun de vos utilisateurs, mais cela empêchera votre dépôt de devenir graduellement gonflé et inutilisable.
Pouvez-vous s'il vous plaît fournir quelques étapes et exemples pour faire le "repo à la volée"? –
Un repo Maven, à la base est juste une structure de répertoires et de certains fichiers. Ce que j'ai fait était de placer mes artefacts dans mon repo local, via 'mvn install', puis de copier les dossiers de mon repo local, dans un dossier de mon projet, en veillant à maintenir la structure du repo. Ensuite, vous vous référez à votre repo via la section 'repositories' tout comme n'importe quel autre repo, mais en vous assurant d'utiliser le chemin relatif. – Andrei
... Donc, fondamentalement, comme ceci: https://stackoverflow.com/a/28762617/895067 – Andrei