我有一个多模块项目,我正在尝试设置许可证插件来管理所有许可证。这是项目设置:
─── transfuse-project
├── examples
│ ├── helloAndroid
│ │ ├── pom.xml
│ │ ├── ...
│ ├── integrationTest
│ │ ├── pom.xml
│ │ ├── ...
│ ├── pom.xml
│ └── ...
├── transfuse
│ ├── pom.xml
│ ├── ...
├── transfuse-api
│ ├── pom.xml
│ ├── ...
├── NOTICE
└── pom.xml
每个 pom.xml 都继承自 transfuse-project pom.xml。在项目 pom.xml 中,我设置了许可证插件以将 NOTICE 应用于相关文件:
<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>
如果我直接从根 (transfuse-project) 构建,则此配置有效。当我直接构建 integrationTest 示例或 api 时出现问题。Maven 找不到我在项目根目录中提供的 NOTICE 文件:
[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]
更糟糕的是,它找到了另一个依赖项的 NOTICE 文件。如果我mvn license:format
在子模块中运行,它将用依赖项的 NOTICE 文件替换所有模块的头文件。
我相信我可以在每个子模块中添加一个 NOTICE 文件来解决这个问题,并为每个子模块 pom 配置它自己的许可证插件,但如果可能的话,我想避免这种重复。是否有一些配置或设置适用于我的项目设置?