我从其ant任务(尚未提供Gradle支持)中使用OWASP Dependency Check,如下所示:
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
。为什么会这样,我该如何避免呢? (依赖检查非常慢。)
最佳答案
这是与Gradle非常常见的混淆。在上面的示例中,您正在项目配置期间执行Ant任务。您真正想要的是使其在任务执行期间运行。要解决此问题,应通过使用doLast {...}
配置块或使用左移(<<
)运算符将执行逻辑放置在任务 Action 中。
task checkDependencies << {
// put your execution logic here
}
有关Gradle构建生命周期的更多信息,请参见Gradle docs。
关于ant - 为什么Gradle总是总是先调用一个Ant任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26896163/