Cómo ejecutar una tarea de Gradle con diferentes parámetros

Me gustaría definir una tarea en gradle (llamadagen) que ejecuta la tarea gradlejar pero con un valor fijo parabaseName. También quiero la tarea originaljar estar disponible después

Mi problema es que no puedo transferir la configuración de manifiesto.

Estoy cansado

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
        }
    }
}

Pensé que estoy redefiniendo elJar tarea utilizando otros valores para archiveName y manifest.

Cuando se ejecuta./gradlew jar Se genera un archivo JAR ejecutable.

Cuando se ejecuta./gradlew gen Se genera un archivo jar. Desafortunadamente cuando intenta ejecutar el programa usandojava -jar build/libs/something.jar Me sale el mensaje de error:

java -jar build / libs / something.jar

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

¿Qué estoy haciendo mal? Simplemente quiero ejecutar la tarea jar con diferentes parámetros (sin configurar la tarea jar en sí, pero ejecutando un alias). ¿Y qué está haciendo el código que escribí (no obtengo un error al ejecutar la tarea. Pero, ¿qué está haciendo?)

Respuestas a la pregunta(1)

Su respuesta a la pregunta