2017-07-11 1 views
0

Wir schaffen eine POM-Datei wie folgt:Kann Gradle ein POM so generieren, dass es die Ausgabedatei nicht unnötig berührt?

task createPom { 
    doLast { 
     pom { 
     project { 
      groupId project.group 
      artifactId project.name 
      version project.ext.pomVersion 
     } 
     }.writeTo("${buildDir}/pom.xml") 
    } 
} 

Diese writeTo in die Datei schreibt eifrig, auch wenn keine Änderungen eingetreten sind, die das Gefäß, so später teuer Aufgaben in der Build (Indizierung ändern verursacht, signieren, Bauinstallateure) müssen ebenfalls laufen.

Ich dachte darüber nach, in eine Temp-Datei zu schreiben und die beiden Dateien irgendwie zu diffundieren, aber es scheint, als würde ich eine Menge Standard schreiben müssen, um das zu tun, also frage ich mich, ob es einen richtigen Weg gibt geh darüber.

Antwort

2

Was Sie tun müssen, ist Aufgabe inputs and outputs zu konfigurieren, die verwendet werden, um festzustellen, ob Ihre Aufgabe aktuell ist oder nicht. Hier, wie es getan werden sollte:

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 Sie eine Demo finden.

+0

Aha, so gibt es eine Möglichkeit, beliebige Eingaben zu haben. Ich nehme an, ich muss auch etwas hineinstecken, um es wissen zu lassen, dass es den Pom neu machen muss, wenn sich auch die Abhängigkeiten ändern, und dass ich auch dafür eine Eigenschaft verwenden kann. – Trejkaz

+0

OK, die fehlende scheint zu sein: inputs.property ('generatedDependencies', model.generatedDependencies) – Trejkaz

+0

Danke @Trejkaz für das Ausarbeiten! – Opal

Verwandte Themen