J'ai un multi-module project dans lequel j'essaye de configurer le plugin de licence pour gérer toutes les licences. Voici la configuration du projet:Projet multi-module Maven avec le plugin de licence
─── transfuse-project
├── examples
│ ├── helloAndroid
│ │ ├── pom.xml
│ │ ├── ...
│ ├── integrationTest
│ │ ├── pom.xml
│ │ ├── ...
│ ├── pom.xml
│ └── ...
├── transfuse
│ ├── pom.xml
│ ├── ...
├── transfuse-api
│ ├── pom.xml
│ ├── ...
├── NOTICE
└── pom.xml
Chaque pom.xml hérite de la pom.xml Transfuser-projet. Dans le projet pom.xml j'ai mis en place le plug-in de licence pour appliquer l'avis aux fichiers pertinents:
<plugin>
<groupId>com.mycila.maven-license-plugin</groupId>
<artifactId>maven-license-plugin</artifactId>
<version>1.9.0</version>
<configuration>
<header>NOTICE</header>
<includes>
<include>**/*.java</include>
<include>**/*.xml</include>
</includes>
<excludes>
<exclude>**/.*/**</exclude>
<exclude>target/**</exclude>
<exclude>**/AndroidManifest.xml</exclude>
</excludes>
<properties>
<year>2013</year>
<name>John Ericksen</name>
</properties>
<useDefaultExcludes>true</useDefaultExcludes>
<strictCheck>true</strictCheck>
</configuration>
<executions>
<execution>
<id>check-headers</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
Cette configuration fonctionne si je construis directement hors de la racine (transfuser-projet). Le problème se pose lorsque je construis l'exemple integrationTest ou api directement. Maven ne peut pas trouver le fichier AVIS I fourni dans la racine du projet:
[ERROR] Failed to execute goal com.mycila.maven-license-plugin:maven-license-plugin:1.9.0:check (check-headers) on project transfuse-api: Some files do not have the expected license header -> [Help 1]
Et ce qui est pire, il trouve le fichier AVIS d'une autre dépendance. Si j'exécute mvn license:format
dans un sous-module, il remplace tous les en-têtes du module par le fichier NOTICE de la dépendance. Je crois que je peux ajouter un fichier NOTICE dans chaque sous-module pour résoudre ce problème et configurer chaque sous-module pom avec son propre plugin de licence, mais je voudrais éviter cette duplication si possible. Y a-t-il une configuration ou une configuration qui fonctionnera avec la configuration de mon projet?
ah, j'ai essayé aussi. Construire à partir de la racine fonctionne, mais la construction de l'un des sous-modules échoue. –
Edited ma réponse ... Cela va fonctionner, mais il est extraplate-forme – asgoth
Bingo, la deuxième option travaillée. Merci pour l'aide. –