Gradle 能否以一种不会不必要地触及输出文件的方式生成 POM?
Posted
技术标签:
【中文标题】Gradle 能否以一种不会不必要地触及输出文件的方式生成 POM?【英文标题】:Can Gradle generate a POM in such a way that it doesn't unnecessarily touch the output file? 【发布时间】:2017-12-14 21:39:53 【问题描述】:我们正在像这样创建一个 POM 文件:
task createPom
doLast
pom
project
groupId project.group
artifactId project.name
version project.ext.pomVersion
.writeTo("$buildDir/pom.xml")
这个writeTo
急切地写入文件,即使没有发生任何更改,这会导致 jar 发生更改,因此后续构建中昂贵的任务(索引、签名、构建安装程序)都必须运行。
我考虑过写入一个临时文件并以某种方式区分这两个文件,但似乎我必须编写很多样板才能做到这一点,所以我想知道是否有合适的方法去关于它。
【问题讨论】:
【参考方案1】:您需要做的是配置任务的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你可以找到一个演示。
【讨论】:
啊哈,所以有一种方法可以任意输入。我假设我还必须放入一些东西,让它知道如果依赖关系也发生变化,它必须重新制作 pom,并且我也可以为此使用属性。 好的,缺少的似乎是:inputs.property('generatedDependencies', model.generatedDependencies)以上是关于Gradle 能否以一种不会不必要地触及输出文件的方式生成 POM?的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess:使用 RewriteCond 但对 IMAGES/JS/CSS 文件的hrefs仍然被不必要地重写[重复]