2015-03-14 4 views
10

Domanda successiva alla domanda this.Memorizzare i nomi dei parametri del metodo per alcune classi quando si crea con Gradle/Java8

Come si memorizzano i nomi dei parametri dei metodi per le classi quando si crea con Gradle (file build.gradle)?

Secondo Java tutorials:

Per memorizzare i nomi dei parametri formali in un particolare file .class, e quindi abilitare l'API Reflection per recuperare i nomi di parametri formali, compilare il file sorgente con l'opzione -parametri al compilatore javac.

così come faccio a passare il "-parametri" al compilatore javac utilizzando Gradle?

Ho provato la soluzione suggerita here, aggiungendo il basso nella mia build.gradle file di senza fortuna.

apply plugin: 'java' 

compileJava { 
    options.compilerArgs << '-parameters' 
    options.fork = true 
    options.forkOptions.executable = 'javac' 
} 

Sto usando Eclipse e se permetto a questo (in Window -> Preferenze -> Java -> compilatore), funziona benissimo.

Store information about method parameters (usable via reflection) 

Ma avrei preferito questa impostazione impostato dal mio sistema di compilazione, in modo da non dipendere da Eclipse e così gli altri possono usare il mio buildt file .jar.

io uso:

  • Eclipse 4.4.2
  • Gradle IDE 3.6.4 (Plug-in Eclipse)

risposta

0

Dopo alcune ricerche per lo stesso problema, una soluzione è di fare qualcosa di simile questo: https://github.com/codeborne/mobileid/blob/master/build.gradle

Aggiungi questo al vostro build.gradle:

[compileJava, compileTestJava]*.options.collect {options -> 
    options.compilerArgs.add '-parameters' 
} 

Funziona per me con Gradle 2,4

1
sourceCompatibility=1.8 
[compileJava, compileTestJava]*.options*.compilerArgs = ['-parameters'] 
1

Per arrivare Gradle stesso per compilare con -parameters aggiungere quanto segue al vostro build.gradle:

compileJava.options.compilerArgs.add '-parameters' 
compileTestJava.options.compilerArgs.add '-parameters' 

Per poter utilizzare Gradle per generare file di progetto Eclipse dove -parameters è impostato per javac: utilizzare un suggerimento da this gradle forum post e aggiungere quanto segue al numero build.gradle:

eclipseProject { 
    doLast { 
    // https://discuss.gradle.org/t/how-to-write-properties-to-3rd-party-eclipse-settings-files/6499/2 

    def props = new Properties() 
    file(".settings/org.eclipse.jdt.core.prefs").withInputStream { 
     stream -> props.load(stream) 
    } 
    props.setProperty("org.eclipse.jdt.core.compiler.codegen.methodParameters", "generate") 
    file(".settings/org.eclipse.jdt.core.prefs").withOutputStream { 
     stream -> props.store(stream, null) 
    } 
} 

}

(A quanto pare a) il plugin Gradle Eclipse non sa come tradurre l'opzione del compilatore -parameters al .settings/org.eclipse.jdt.core.prefs impostazione org.eclipse.jdt.core.compiler.codegen.methodParameters=generate e b) non c'è alcun task standard Gradle che manipola uno qualsiasi dei file di proprietà in .settings , quindi devi girare il tuo.)

Questo è per Gradle 2.8.