Je tente de reprendre le contrôle des dépendances utilisées par nos projets en migrant de la gestion zéro (dossier lib local) vers un système géré localement (Archiva).Gestion du référentiel maven local avec Apache Archiva - licences
Chacune de nos dépendances réside déjà dans un répertoire distinct, similaire à celui créé par Archiva. Un répertoire individuel contient le fichier jar de dépendance, le fichier zip/jar source, le fichier javadoc zip/jar et un fichier texte avec la licence pour la dépendance. Ce dernier est nécessaire au processus de construction, car les produits finaux doivent contenir un répertoire de licences tiers, où toutes les licences de dépendance sont regroupées sous forme de fichiers (et non d'URL).
J'ai (après avoir lu la documentation et les essais/erreurs) réussi à correctement upload tous les artefacts d'une dépendance, à l'exception de sa licence. Pendant que les fichiers txt représentant les licences sont téléchargés, je ne comprends pas comment on est censé indiquer qu'un tel fichier est une licence pour la dépendance.
J'ai essayé de modifier le fichier POM de la dépendance à inclure des informations de licence, puis le récupérer dans Maven via license-maven-plugin
:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>2.5.2</version>
<licenses>
<license>
<url>http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt</url>
</license>
</licenses>
</project>
Mais cela ne fonctionne pas. Le plugin crache des erreurs HTTP 401, si j'essaye ça.
--- license-maven-plugin:1.14:download-licenses (download-licenses) @ maventest ---
Unable to retrieve license for dependency: org.example:example
http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt
Server returned HTTP response code: 401 for URL: http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt
Il semble un peu non-intuitive que je dois préciser une URL complète pour la licence - le fichier est là sur le serveur à côté du fichier de dépendance jar associé et POM lui-même (et ils sont tous les deux téléchargés sans Erreurs non autorisées) - mais c'est ce que le paramètre veut. Il semble presque que les licences soient hébergées sur un site externe accessible au public et non dans le référentiel lui-même.
indiquant Explicitement une dépendance dans le projet POM des travaux de cours, pour autant que le téléchargement va:
<dependency>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>2.5.2</version>
<classifier>LICENSE</classifier>
<type>txt</type>
</dependency>
Mais cela ne se sent pas bien - même pas sûr comment on pourrait y faire référence dans le processus de construction afin de copier aux endroits appropriés.
Comment gérer correctement les artefacts de licence dans un référentiel géré par Archiva? Comment les référence-t-on correctement dans leurs projets Maven?
D'abord l'hypothèse que vous faites est fausse en particulier liée au fichier de licence ... La licence est une information qui est faite dans le fichier pom lui-même ... Vous pouvez utiliser un plugin maven pour rassembler les licences en tant que build résultat plus tard ... En outre, je suggère d'utiliser une chose comme gestionnaire de référentiel Nexus – khmarbaise
@ Khmarbaise, je ne comprends pas votre commentaire. De mon point de vue, je fais exactement ce que vous avez décrit: spécification des informations de licence dans le fichier POM, plus tard en utilisant un plugin pour les rassembler en tant que ressource. Le dernier extrait de XML dans ma question est juste pour montrer que le fichier requis est bien dans le dépôt - je ne peux pas y accéder avec le plugin comme prévu. J'avais déjà prévu de jeter un coup d'œil à Nexus, un équivalent d'Archiva. – predi