我使用其ant任务中的OWASP依赖关系检查(还没有Gradle支持),如下所示:
task checkDependencies() {
ant.taskdef(name: 'checkDependencies',
classname: 'org.owasp.dependencycheck.taskdefs.DependencyCheckTask',
classpath: 'scripts/dependency-check-ant-1.2.5.jar')
ant.checkDependencies(applicationname: "MyProject",
reportoutputdirectory: "generated",
dataDirectory: "generated/dependency-check-cache") {
fileset(dir: 'WebContent/WEB-INF/lib') {
include(name: '**.jar')
}
}
}
这样做太好了。即使没有将此ant任务定义为依赖项(无论是在ant还是在Gradle中),它始终首先执行,即使对于简单的gradlew tasks
也是如此。为什么这样,我怎么能避免这种情况? (依赖性检查非常慢。)
答案 0 :(得分:2)
这是与Gradle的非常常见的混淆。在上面的示例中,您将在项目配置期间执行Ant任务。您真正想要的是在任务执行期间运行它。要解决此问题,您的执行逻辑应放在任务操作中,方法是使用doLast {...}
配置块或使用左移(<<
)运算符。
task checkDependencies << {
// put your execution logic here
}
有关Gradle构建生命周期的详细信息,请参阅Gradle docs。