2015-03-14 1 views
10

Follow-up Frage zu this Frage.Speichern Sie Methoden-Parameternamen für einige Klassen beim Erstellen mit Gradle/Java8

Wie speichere ich Methodenparameternamen für Klassen beim Erstellen mit Gradle (build.gradle-Datei)?

Nach Java tutorials:

in einer bestimmten .class-Datei formalen Parameternamen zu speichern, und damit die Reflection-API ermöglichen formalen Parameternamen abzurufen, kompilieren die Quelle mit der -parameter Optionsdatei zum Javac-Compiler.

So wie ich die "-Parameter" auf die Verwendung von Gradle Javac Compiler übergeben?

habe ich versucht, die vorgeschlagene Lösung here, von die unten in meine build.gradle Datei ohne Glück hinzufügen.

apply plugin: 'java' 

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

Ich bin mit Eclipse und wenn ich dies zu ermöglichen (im Fenster -> Einstellungen -> Java -> Compiler), es funktioniert gut.

Store information about method parameters (usable via reflection) 

Aber ich würde lieber diese Einstellung durch meine Build-System eingestellt haben, so dass ich nicht abhängig von Eclipse und so können andere meine buildt .jar-Dateien verwenden.

Ich benutze:

  • Eclipse-4.4.2
  • Gradle IDE 3.6.4 (Eclipse-Plugin)

Antwort

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

Um selbst zu erhalten Gradle mit -parameters fügen Sie folgendes zu Ihrem kompilieren build.gradle:

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

Um Gradle zu verwenden Eclipse-Projekt-Dateien zu generieren wo -parameters ist für javac festgelegt: Verwenden Sie einen Tipp von this gradle forum post und fügen Sie folgende zu Ihrem 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) 
    } 
} 

}

(Anscheinend a) die Gradle Eclipse-Plugin nicht weiß, wie die Compiler-Option übersetzen -parameters auf die .settings/org.eclipse.jdt.core.prefsorg.eclipse.jdt.core.compiler.codegen.methodParameters=generate Einstellung und b) es gibt keine Standard Gradle Aufgabe, die in .settings eine der Eigenschaftsdateien manipuliert , also musst du deine eigenen rollen.)

Dies ist für Gradle 2.8.