我们正在创建一个像这样的POM文件:
task createPom {
doLast {
pom {
project {
groupId project.group
artifactId project.name
version project.ext.pomVersion
}
}.writeTo("${buildDir}/pom.xml")
}
}
即使没有发生任何更改,这个writeTo
也急切地写入文件,这会导致jar发生变化,因此后来构建中的昂贵任务(索引,签名,构建安装程序)也必须运行。
我想过要写一个临时文件并以某种方式对这两个文件进行区分,但似乎我必须编写很多样板来做到这一点,所以我想知道是否有一个正确的方法。
答案 0 :(得分:2)
您需要做的是配置任务inputs and outputs,用于确定您的任务是否是最新的。在这里,应该如何做:
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")
}
}
Here你可以找到一个演示。