Why make donate
Usage

License

Le projet offre des goals pour traiter les licenses d'un projet.

update-project-license goal

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.

update-file-header goal

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.

configuration

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.

Third-party

Le projet offre des goals pour traiter les THIRD-PARTY d'un projet.

add-third-party goal

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.

aggregate-add-third-party goal

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.

Comment consolider le fichier THIRD-PARTY

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.

Ajouter les licenses manquantes.

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.

Exemple

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)

Fusionner les licenses.

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.

Exemple

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)

Filtrer les dépendances

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.

  • Inclure des ArtifactIds ou des GroupIds

    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.

  • Exclude ArtifactIds or GroupIds

    Les propriétés excludedArtifacts et excludesGroups permettent d'exclure certaines dépendances du fichier de THIRD-PARTY.

  • Inclusion - Exclusion : Priorité.

    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.

excludedgroups

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.

Exemple

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)

excludedartifacts

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.

Exemple

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)

includedGroups

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.

Exemple

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)

includedArtifacts

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.

Example

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)

Obtenir des informations

license-list goal

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.

Exemple d'exécution

  [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

comment-style-list goal

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.

Exemple d'exécution

  [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

help goal

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.

Maven JRst ReStructuredText