Usage
Le projet offre des goals pour traiter les licenses d'un projet.
Ce goal crée ou met à jour le fichier LICENSE.txt et l'ajoute au build.
Il peut aussi générer un fichier bundle License pour éviter la collision de noms dans une application finale
pour plus d'informations, référez-vous à la page de détail.
Ce goal ajoute ou met à jour les header de licenses des fichiers en utilisant un fichier de description xml permettant de décrire les fichiers d'un module à inclure dans le process de license.
Pour plus d'informations, référez-vous à la page de détail.
Par défaut, en l'absence de fichier descripteur, tous les fichiers *.java *.rst *.xml et *.properties contenus dans "src/**/*" sont traités. Il est cependant nécessaire de préciser la license à utiliser, par le parametre licenseName.
Pour plus d'informations, référez-vous à la page de détail.
Le projet offre des goals pour traiter les THIRD-PARTY d'un projet.
Ce goal construit le fichier THIRD-PARTY.txt et l'ajoute au build.
Depuis la version 2.3, on peut consolider le fichier généré en remplissant un fichier pour les dépendances sans license.
Note: Ce goal n'a pas d'effet sur un projet de type pom.
Pour plus de détails, référez-vous à la page de détail.
Ce goal construit le fichier THIRD-PARTY.txt d'un projet multi-module à partir de toutes les dépendences des modules du projet.
Note: Ce goal n'a d'effet que sur un projet de type pom.
Pour plus de détails, référez-vous à la page de détail.
Il est possible de consolider le fichier THIRD-PARTY :
- Renseigner les licenses manquantes pour une dépendence (si la license n'a pas été renseignée dans le pom de la dépendance.
- Fusionner des licenses identiques mais nommées différemment dans le pom des dépendances.
En utilisant la propriété useMissingfile sur les deux goals, cela va créée si nécessaire un fichier localisé par la propriété missingFfile (par défaut src/license/THIRD-PARTY.properties).
Dans ce fichier on y retrouve la liste des dépendances du projet sans license. Il suffit alors de renseigner le fichier avec les bonnes licenses.
Une fois le fichier complété, il suffit de relancer le goal, le nouveau THIRD-PARTY généré intègrera les licenses complétées.
Soit le pom avec ces dépendences :
<dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>commons-primitives</groupId> <artifactId>commons-primitives</artifactId> <version>1.0</version> </dependency> </dependencies>
Voici un fichier THIRD-PARTY.properties contenant des dépendances sans license généré en lançant la commande :
mvn license:add-third-party -DuseMissingFile List of 2 third-party dependencies. (The Apache Software License, Version 2.0) Commons Logging (commons-logging:commons-logging:1.1.1 - http://commons.apache.org/logging) (Unknown license) Unnamed - commons-primitives:commons-primitives:jar:1.0 (commons-primitives:commons-primitives:1.0 - no url defined)
Et le fichier THIRD-PARTY.properties généré :
# Generated by org.nuiton.license.plugin.AddThirdPartyMojo #------------------------------------------------------------------------------- # Already used licenses in project : # - The Apache Software License, Version 2.0 #------------------------------------------------------------------------------- # Please fill the missing licenses for dependencies : # # #Fri Jun 25 10:56:39 CEST 2010 commons-primitives--commons-primitives--1.0=
On renseigne le fichier :
# Generated by org.nuiton.license.plugin.AddThirdPartyMojo #------------------------------------------------------------------------------- # Already used licenses in project : # - The Apache Software License, Version 2.0 #------------------------------------------------------------------------------- # Please fill the missing licenses for dependencies : # # #Fri Jun 25 10:56:39 CEST 2010 commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
En relançant le goal on obtient le nouveau fichier THIRD-PARTY.txt suivant :
List of 2 third-party dependencies. (The Apache Software License, Version 2.0) Commons Logging (commons-logging:commons-logging:1.1.1 - http://commons.apache.org/logging) (The Apache Software License, Version 2.0) Unnamed - commons-primitives:commons-primitives:jar:1.0 (commons-primitives:commons-primitives:1.0 - no url defined)
Pour fusionner des licenses dans le fichier THIRd-PARTY, il faut utiliser la configuration licenseMerges.
Chaque entrée de licenseMerges décrit une fusion, la première license étant celle à conserver.
Soit le pom avec ces dépendences :
<dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>filters</artifactId> <version>2.0.235</version> </dependency> </dependencies>
On obtient le fichier THIRD-PARTY suivant :
List of 2 third-party dependencies. (Apache License, Version 2.0) JHLabs Image Processing Filters (com.jhlabs:filters:2.0.235 - http://www.jhlabs.com/ip/index.html) (The Apache Software License, Version 2.0) Commons Logging (commons-logging:commons-logging:1.1.1 - http://commons.apache.org/logging)
En ajoutant cela à la configuration du plugin
<pluginManagement> <plugins> <plugin> <groupId>org.nuiton</groupId> <artifactId>maven-license-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>default-cli</id> <configuration> <licenseMerges> <licenseMerge>The Apache Software License, Version 2.0|Apache License, Version 2.0</licenseMerge> </licenseMerges> </configuration> </execution> </executions> </plugin> ... </plugins> </pluginManagement>
et en relançant le goal, on obtient le fichier THIRD-PARTY suivant :
List of 2 third-party dependencies. (The Apache Software License, Version 2.0) Commons Logging (commons-logging:commons-logging:1.1.1 - http://commons.apache.org/logging) (The Apache Software License, Version 2.0) JHLabs Image Processing Filters (com.jhlabs:filters:2.0.235 - http://www.jhlabs.com/ip/index.html)
Depuis la version 2.3, il est possible d'utiliser des filtres sur le THIRD-PARY, en n'incluant que certaines dépendances, ou en excluant certaines.
Les propriétés includedArtifacts et includedGroups permettent de ne mentionner que certaines dépendances, renseignées par leur ArtifactId ou le GroupId, dans le fichier THIRD-PARTY.
Les propriétés excludedArtifacts et excludesGroups permettent d'exclure certaines dépendances du fichier de THIRD-PARTY.
Le filtre d'exclusion est prioritaire sur le filtre d'inclusion. Aussi, si un artifact est renseigné en includedArtifacts mais que son groupe est renseigné dans le excludedArtifacts, l'artifact ne sera pas présent dans le fichier THIRD-PARTY.
En utilisant la propriété excludeGroups avec les goals third-party, cela supprime du fichier THIRD-PARTY toutes les dépendances provenant des groupsIds donnés.
Soit un pom avec les dépendances suivantes :
<dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>filters</artifactId> <version>2.0.235</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>javaproj</artifactId> <version>1.0</version> </dependency< </dependencies>
En executant mvn add-third-party -Dlicense.excludedGroups=com\.jhla.*, on obtient le fichier THIRD-PARTY suivant :
List of 2 third-party dependencies. (The Apache Software License, Version 2.0) Commons Logging (commons-logging:commons-logging:1.1.1 - http://commons.apache.org/logging)
En utilisant la propriété excludeArtifacts sur les goals third-party, cela supprime du fichier THIRD PARTY toutes les dépendances correspondant artifactsIds renseignés.
Soit un pom avec les dependances suivantes :
<dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>filters</artifactId> <version>2.0.235</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>javaproj</artifactId> <version>1.0</version> </dependency< </dependencies>
En executant mvn add-third-party -Dlicense.excludedArtifacts=javaproj, on obtient le fichier THIRD-PARTY suivant :
List of 2 third-party dependencies. (Apache License, Version 2.0) JHLabs Image Processing Filters (com.jhlabs:filters:2.0.235 - http://www.jhlabs.com/ip/index.html) (The Apache Software License, Version 2.0) Commons Logging (commons-logging:commons-logging:1.1.1 - http://commons.apache.org/logging)
L'utilisation de la propriété includeGroupIds avec les goals third-party permet de renseigner le fichier THIRD-PARTY uniquement avec les dépendances provenant des groupsIds donnés.
Soit un pom avec les dependances suivantes :
<dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>filters</artifactId> <version>2.0.235</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>javaproj</artifactId> <version>1.0</version> </dependency< </dependencies>
En executant mvn add-third-party -Dlicense.includedGroups=com\.jhlabs, on obtient le fichier THIRD-PARTY suivant :
List of 2 third-party dependencies. (Apache License, Version 2.0) JHLabs Image Processing Filters (com.jhlabs:filters:2.0.235 - http://www.jhlabs.com/ip/index.html) (The Apache Software License, Version 2.0) JHlabs Java Projection Library (com.jhlabs:javaproj:1.0 - http://www.jhlabs.com/java/maps/proj/index.html)
L'utilisation de la propriété excludeArtifactIds sur les goals third-party permet de n'inclure dans le fichier THIRD-PARTY que les artifacts renseignés.
Soit un pom avec les dependances suivantes :
<dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>filters</artifactId> <version>2.0.235</version> </dependency> <dependency> <groupId>com.jhlabs</groupId> <artifactId>javaproj</artifactId> <version>1.0</version> </dependency< </dependencies>
En executant mvn add-third-party -Dlicense.includedArtifacts=filters, on obtient le fichier THIRD-PARTY suivant :
List of 2 third-party dependencies. (Apache License, Version 2.0) JHLabs Image Processing Filters (com.jhlabs:filters:2.0.235 - http://www.jhlabs.com/ip/index.html)
Ce goal affiche les licenses disponibles.
A utiliser directement (et seulement) depuis la ligne de commande :
mvn license:license-list
Pour afficher le header de license, utilisez le paramètre detail :
mvn license:license-list -Ddetail
Pour plus d'informations, référez-vous à la page de détail.
[INFO] [license:license-list {execution: default-cli}] [INFO] Available licenses : * agpl_v3 : GNU Affero General Public License (AGPL) version 3.0 * apache_v2 : Apache License version 2.0 * cddl_v1 : COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 * fdl_v1_3 : GNU Free Documentation License (FDL) version 1.3 * gpl_v1 : GNU General Public License (GPL) version 1.0 * gpl_v2 : GNU General Public License (GPL) version 2.0 * gpl_v3 : GNU General Public License (GPL) version 3.0 * lgpl_v2_1 : GNU General Lesser Public License (LGPL) version 2.1 * lgpl_v3 : GNU General Lesser Public License (LGPL) version 3.0 * mit : MIT-License
Ce goal affiche les styles de commentaires disponibles pour boxer le header de fichier.
A utiliser directement (et simplement) depuis la ligne de commande :
mvn license:comment-style-list
Pour afficher l'exemple, utilisez le paramètre detail :
mvn license:comment-style-list -Ddetail
Pour plus d'informations, référez-vous à la page de détail.
[INFO] [license:comment-style-list {execution: default-cli}] [INFO] List of available comment styles: - apt : header transformer with apt comment style - java : header transformer with java comment style - properties : header transformer with properties file comment style - rst : header transformer with rst comment style - xml : header transformer with xml comment style
Ce goal affiche l'aide du plugin (goals disponibles).
A utiliser directement (et uniquement) depuis la ligne de commande.
mvn license:help
Pour afficher l'aide verbeuse :
mvn license:help -Ddetail
Pour plus d'informations, référez-vous à la page de détail.