好的就是问题,我正在使用Gradle在Java中开发一个应用程序 我有一个Gradle任务,如果它不存在,则在每个文件的顶部添加许可证。
我想添加一个预先挂起的钩子,这样当我提交文件时,Gradle任务会运行并根据需要在文件之上更改许可证。请记住,Gradle licenseFormat可能不会同时更改任何内容或超过10个文件,因此我无法知道哪些文件已更改以将其添加为手动提交。
我试过这个钩子:
[hooks]
pre-commit.licenseFormat=C:/Users/pc/Dropbox/{REPOSITORIES}/{PETULANT}/format.bat
它只是调用一个运行Gradle命令的批处理文件,但是,正如我所怀疑的那样,因为某些文件被更改,而这些文件不在当前提交中,所以提交被卡住了,它似乎陷入无限循环调用批处理文件一次又一次,每次都会触发命令 在下一次运行命令时,不应该更改任何内容,但是当第一次运行更改的文件超过几个时,我认为提交会激活批处理文件两次以上。
所以问题是,在第一次运行批处理文件并将更改的文件添加到当前或新提交后,如何停止提交挂钩?
感谢。
答案 0 :(得分:0)
批处理文件只是命令:
gradlew licenseFormat

正如我所说,它运行一个gradle任务,它将在所需文件的基础上添加许可证注释,换句话说,它首先检查文件的标题并将其与应该存在的那个进行比较,如果它们是同样的,那么文件将不会被触及但如果它们不相同,它会删除标题并将许可文本作为注释添加到头顶,如果你想要更多的部门看看实际任务是这样的:
buildscript{
repositories{
mavenCentral()
jcenter()
maven { url = "http://files.minecraftforge.net/maven" }
maven { url = "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies{
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
classpath 'org.ajoberstar:gradle-git:0.10.1'
classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0'
}
}
apply plugin: 'license'
license{
ext.name = project.name
ext.organization = project.organization
ext.url = project.url
ext.year = project.inceptionYear
exclude '**/*.info'
exclude '**/*.json'
exclude '**/*.ma'
exclude '**/*.mb'
exclude '**/*.png'
header new File(projectDir, 'HEADER.txt')
sourceSets = project.sourceSets
ignoreFailures = false
strictCheck = true
mapping { java = 'SLASHSTAR_STYLE'}
}