Classycle是一个非常好的类和包依赖项的分析器和依赖项检查器。
它使您可以定义程序包组(组件,层),并表达不需要的依赖性,例如周期或特定程序包之间的依赖性。 例如,您可以指定不希望包周期,也不需要com.foo.api。*上com.foo.domain。*的依赖关系。 全部使用非常人性化,简洁的格式 。
然后启动分析器(它带有Ant任务和独立的命令行工具),它会生成包含违规的报告。
还有许多其他工具:JDepend,Sonar,JArchitect等。 那为什么要Classycle呢?
- 它是免费的(BSD许可证)。
- 它很快。
- 它功能强大且富有表现力。 规则仅包含几行易于阅读的文本。
- 它与构建工具很好地集成在一起。 对于每个构建,我们都将其作为构建脚本的一部分运行。 实际上,这只是另一个自动化测试。 由于这个项目结构可能是我迄今为止使用过的最干净的结构。
Gradle插件
有了Ant任务,Classycle很容易与Gradle集成,但有一个警告:正式版本不在Maven Central中,唯一存在的版本不包含Ant任务。
Gradle本身通过脚本插件使用Classycle,该插件嵌入在项目结构中的某个位置。 他们在自己的存储库中发布了Classycle,但它是不支持Java 8的较旧版本。
受此启发, 我们编写了自己的插件,并以最小的努力使每个人都可以使用它。 它可以在Gradle插件门户网站和GitHub上获得 。
为了使用它,您需要做的是:
- 将插件添加到您的项目中:
plugins { id "pl.squirrel.classycle" version "1.1" }
- 为要包含在src / test / resources / classycle-$ {sourceSet.name} .txt中的每个源集创建Classycle定义文件:
show allResults {package} = com.example check absenceOfPackageCycles > 1 in ${package}.*
- 恭喜,这就是将Classycle与Gradle构建集成在一起的全部步骤! 现在您有以下任务:
# For each source set that has the dependency definition file: classycleMain, classycleTest, ... # Analyze all source steps in one hit: classycle # Also part of the check task: check
翻译自: https://www.javacodegeeks.com/2015/05/validating-classpackage-dependencies-with-classycle.html