Licensee 完整配置指南从基础允许列表到高级忽略规则【免费下载链接】licenseeGradle plugin which validates the licenses of your dependency graph match what you expect项目地址: https://gitcode.com/gh_mirrors/lic/licensee终极指南如何通过Licensee Gradle插件保护您的项目免受不兼容许可证的侵害️Licensee 是一个强大的Gradle插件专门用于验证项目依赖图中的许可证是否符合您的预期。想象一下您的闭源产品依赖于Apache 2许可证的库但当依赖库更新时可能会引入不兼容的GPL许可证的传递依赖。Licensee 插件正是为了解决这种危机而设计它会在构建时自动检查所有依赖的许可证确保您的项目不会意外引入不兼容的许可证。 Licensee 快速入门指南基础安装步骤首先在您的build.gradle文件中添加Licensee插件buildscript { repositories { mavenCentral() } dependencies { classpath app.cash.licensee:licensee-gradle-plugin:1.14.1 } } apply plugin: app.cash.licensee对于使用Gradle插件DSL的项目配置更加简洁plugins { id java-library id app.cash.licensee version 1.14.1 }Licensee 插件需要与以下语言/平台插件之一一起应用java-libraryjavacom.android.applicationcom.android.libraryorg.jetbrains.kotlin.jvmorg.jetbrains.kotlin.jsorg.jetbrains.kotlin.multiplatform核心配置允许许可证列表最基本的配置是定义允许的许可证列表。Licensee 支持SPDX许可证标识符licensee { allow(Apache-2.0) allow(MIT) allow(BSD-3-Clause) }完整的SPDX标识符列表可在 spdx.org/licenses/ 查看。 高级配置技巧1. 允许特定URL许可证有些项目可能使用非标准许可证或自定义许可证URL。对于这种情况可以使用allowUrl方法licensee { allowUrl(https://example.com/custom-license.html) }您还可以添加原因说明这在团队协作中特别有用licensee { allowUrl(https://example.com/license.html) { because Apache-2.0, but self-hosted copy of the license } }2. 允许特定依赖项某些依赖项可能缺少许可证信息或包含错误的许可证数据。对于这些特殊情况可以使用allowDependency方法licensee { allowDependency(com.example, example, 1.0.0) }同样您可以添加原因说明来记录决策licensee { allowDependency(com.jetbrains, annotations, 16.0.1) { because Apache-2.0, but typo in license URL fixed in newer versions } }3. 忽略依赖项规则对于内部闭源库或已购买商业许可证的库您可能希望完全忽略它们licensee { ignoreDependencies(com.mycompany.internal) ignoreDependencies(com.mycompany.utils, utils) }添加原因说明licensee { ignoreDependencies(com.example.sdk, sdk) { because commercial SDK } }4. 传递性忽略规则高级功能有时您需要忽略整个依赖分支。这是非常强大的功能因此需要提供原因说明licensee { ignoreDependencies(com.other.sdk, sdk) { transitive true because commercial SDK with proprietary dependencies } }⚠️ 警告传递性忽略会忽略目标依赖项的所有传递依赖无论其坐标或许可证信息如何。使用时要特别小心 Android项目特殊配置Android资产捆绑Licensee 支持将许可证报告打包到Android资产中licensee { bundleAndroidAsset true androidAssetReportPath licenses/artifacts.json // 可选自定义路径 }这将在您的APK中生成assets/app/cash/licensee/artifacts.json文件方便运行时访问许可证信息。Android变体支持对于Android项目Licensee 会自动为每个构建变体创建任务licenseeDebug- 调试版本检查licenseeRelease- 发布版本检查licensee- 聚合所有变体的检查 报告与输出Licensee 插件始终会生成详细的报告文件位于buildDir/reports/licensee/目录中1. artifacts.json包含依赖图中每个工件的完整许可证信息的JSON文件。这个文件非常适合自动化处理或集成到其他工具中。2. validation.txt纯文本报告列出每个工件及其许可证的允许/不允许状态。格式清晰便于人工审查。对于Android模块报告位于buildDir/reports/licensee/variant name/目录。 最佳实践与技巧1. 渐进式采用策略如果您正在向现有项目添加Licensee建议从宽松的配置开始licensee { allow(Apache-2.0) allow(MIT) allow(BSD-2-Clause) allow(BSD-3-Clause) }然后逐步收紧策略处理不兼容的依赖项。2. 多模块项目配置对于多模块项目建议在根项目的build.gradle中配置通用规则在子模块中覆盖特定规则。3. 持续集成集成将Licensee检查集成到CI/CD流水线中确保每次构建都进行许可证验证./gradlew licensee4. 定期审查依赖项定期运行Licensee并审查报告特别是在依赖项更新后。️ 故障排除与常见问题问题1构建失败显示SPDX identifier GPL-3.0-or-later is NOT allowed解决方案检查是否确实需要使用该依赖如果必须使用考虑添加允许规则allow(GPL-3.0-or-later)或者使用忽略规则如果适用ignoreDependencies(com.example, problematic-lib) { because Internal use only, not distributed }问题2依赖项缺少许可证信息解决方案allowDependency(com.example, no-license-lib, 1.0.0) { because Verified with maintainer: uses MIT license }问题3Android项目中的变体问题确保为每个需要检查的变体配置Licensee或者使用聚合的licensee任务。 Kotlin DSL配置示例如果您使用Kotlin DSL进行Gradle配置Licensee的配置方式略有不同import app.cash.licensee.LicenseeExtension configureLicenseeExtension { allow(Apache-2.0) allow(MIT) allowUrl(https://example.com/license.html) { because(Custom license equivalent to Apache-2.0) } allowDependency(com.example, special-lib, 2.0.0) { because(Manually verified license) } ignoreDependencies(com.internal, internal-lib) { because(Proprietary internal library) } } 总结Licensee 是保护项目免受许可证兼容性问题侵害的终极工具。通过本文的完整配置指南您应该能够✅ 快速安装和配置Licensee插件✅ 设置基础的许可证允许列表✅ 处理特殊情况下的许可证配置✅ 使用高级忽略规则管理复杂依赖✅ 集成到Android项目和CI/CD流水线记住良好的许可证管理不仅是法律要求也是对开源社区贡献者的尊重。通过使用Licensee您可以确保项目的许可证合规性避免潜在的法律风险同时保持开发流程的顺畅。开始使用Licensee让您的项目构建更加安全可靠【免费下载链接】licenseeGradle plugin which validates the licenses of your dependency graph match what you expect项目地址: https://gitcode.com/gh_mirrors/lic/licensee创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考