3

J'ai besoin de modifier le script de démarrage généré par Gradle pour la tâche distTar. J'ai seem to be able to set unixStartScriptGenerator.template comme indiqué ci-dessous, mais quand je déballe le script du tar mes changements ne sont pas là.Comment puis-je modifier unixStartScriptGenerator.template dans la tâche createStartScripts afin que distTar utilise mon fichier de modèle personnalisé dans build.gradle?

Ceci est mon plein build.gradle:

apply plugin: 'java' 
apply plugin: 'war' 

// to use the main method in Main, which uses Jetty 
apply plugin: 'application' 
mainClassName = 'com.example.Main' 
project.version = '2017.0.0.0' 

repositories { 
    mavenLocal() 
    mavenCentral() 
} 

task createStartScripts(type: CreateStartScripts) { 
    // based on https://github.com/gradle/gradle/tree/v3.5.0/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins 
    def tplName = 'unixStartScriptTemplate.txt' 
    // this succeeds. I tried negating it to ensure that it runs, and it failed, so it's running. 
    assert project.file(tplName).exists(); 
    unixStartScriptGenerator.template = project.file(tplName).newReader() as TextResource 
// windowsStartScriptGenerator.template = resources.text.fromFile('customWindowsStartScript.txt') 
} 


dependencies { 
// mostly elided 
    compile 'org.apache.logging.log4j:log4j-api:2.8.+' 
    compile 'org.apache.logging.log4j:log4j-core:2.8.+' 
    compile 'de.bwaldvogel:log4j-systemd-journal-appender:2.2.2' 

    testCompile "junit:junit:4.12" 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '3.5' 
} 

Non qu'il devrait la matière, mais mon modèle, unixStartScriptTemplate.txt, est la plupart du temps la même chose que the original unixStartScript.txt, mais avec quelques commentaires supplémentaires et une ligne changer JAVACMD.

S'il existe une meilleure façon de définir ce modèle, s'il vous plaît faites le moi savoir.

+0

De cette façon, vous ajoutez une nouvelle tâche alors que vous devriez plutôt brancher en existant, voir: https: // gist.github.com/Opalo/88be0c6c1c03061581efab84bec9f96c – Opal

+0

@Opal, ça marche! en faire une réponse? –

+0

Génial! Voici! – Opal

Répondre

1

De cette façon, vous ajoutez une nouvelle tâche alors que vous devriez plutôt brancher en existant, essayez:

tasks.withType(CreateStartScripts) { 
    def tplName = 'unixStartScriptTemplate.txt' 
    assert project.file(tplName).exists() 
    unixStartScriptGenerator.template = resources.text.fromFile(tplName) 
} 
+0

Juste un edit: le réglage du template devrait être '' 'unixStartScriptGenerator.template = ...' '' –

+0

@TravisWellman, corrigé. Merci. – Opal