Wie führe ich eine Gradle-Aufgabe mit verschiedenen Parametern aus?

Ich möchte eine Aufgabe in Gradle definieren (mit dem Namengen) das die gradle Aufgabe ausführtjar aber mit einem festen Wert fürbaseName. Ich möchte auch die ursprüngliche Aufgabejar, um danach verfügbar zu sein.

Mein Problem ist, dass ich die Einstellungen für das Manifest nicht übertragen kann.

ch bin müde,

def mainFile = 'com.so.proj.App'
def filename = 'something'

jar {
    baseName filename
    manifest {
        attributes 'Main-Class': mainFile
    }
}

task gen (type: Jar) {
    description "Generates JAR without version number."
    doFirst {
        //archiveName = jar.baseName + "." + extension
        archiveName = filename + ".jar"
        manifest {
            attributes 'Main-Class': mainFile
        }
    }
}

Ich dachte, ich definiere dieJar Task mit anderen Werten für archiveName und manifest.

Wenn läuft./gradlew jar Es wird eine ausführbare JAR-Datei generiert.

Wenn läuft./gradlew gen Eine JAR-Datei wird generiert. Leider beim Versuch, das Programm mit @ auszuführjava -jar build/libs/something.jar Ich erhalte die Fehlermeldung:

java -jar build / libs / something.jar

Error: Could not find or load main class com.so.proj.App

Was mache ich falsch? Ich möchte einfach die JAR-Task mit anderen Parametern ausführen (ohne die JAR-Task selbst zu konfigurieren, aber mit einem Alias). Und was macht der Code, den ich geschrieben habe? (Beim Ausführen der Aufgabe wird keine Fehlermeldung angezeigt. Aber was macht er?)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage