Gradle能否以这样一种方式生成POM,即它不会';是否不必要地触摸输出文件?
我们正在创建一个POM文件,如下所示:Gradle能否以这样一种方式生成POM,即它不会';是否不必要地触摸输出文件?,gradle,pom.xml,Gradle,Pom.xml,我们正在创建一个POM文件,如下所示: task createPom { doLast { pom { project { groupId project.group artifactId project.name version project.ext.pomVersion } }.writeTo("${buildDir}/pom.xml") } }
task createPom {
doLast {
pom {
project {
groupId project.group
artifactId project.name
version project.ext.pomVersion
}
}.writeTo("${buildDir}/pom.xml")
}
}
这writeTo
即使没有发生任何更改,也会急切地写入文件,这会导致jar发生更改,因此构建中后期昂贵的任务(索引、签名、构建安装程序)也必须运行
我曾考虑写入一个临时文件并以某种方式区分这两个文件,但似乎我必须编写大量的样板文件才能做到这一点,因此我想知道是否有一种正确的方法来实现这一点。您需要做的是配置用于确定任务是否最新的任务。在这里,应该如何做:
apply plugin: 'maven'
ext {
pomVersion = '3.1.4.5'
}
group = 'lolgroup'
task createPom {
outputs.file "${buildDir}/pom.xml"
inputs.property('group', project.group)
inputs.property('name', project.name)
inputs.property('pomVersion', project.ext.pomVersion)
doLast {
pom {
project {
groupId inputs.properties['group']
artifactId inputs.properties['name']
version inputs.properties['pomVersion']
}
}.writeTo("${buildDir}/pom.xml")
}
}
你可以找到一个演示 您需要做的是配置用于确定您的任务是否为最新任务的任务。在这里,应该如何做:
apply plugin: 'maven'
ext {
pomVersion = '3.1.4.5'
}
group = 'lolgroup'
task createPom {
outputs.file "${buildDir}/pom.xml"
inputs.property('group', project.group)
inputs.property('name', project.name)
inputs.property('pomVersion', project.ext.pomVersion)
doLast {
pom {
project {
groupId inputs.properties['group']
artifactId inputs.properties['name']
version inputs.properties['pomVersion']
}
}.writeTo("${buildDir}/pom.xml")
}
}
你可以找到一个演示 啊哈,所以有一种方法可以任意输入。我假设我还必须加入一些东西,让它知道如果依赖项也发生变化,它必须重新生成pom,并且我也可以使用一个属性。好的,缺少的一个似乎是:inputs.property('generatedDependencies',model.generatedDependencies)Aha,所以有一种方法可以获得任意输入。我假设我还必须加入一些东西,让它知道如果依赖项也发生变化,它必须重新生成pom,并且我也可以使用一个属性。好的,缺少的是:inputs.property('generatedDependencies',model.generatedDependencies)