Tengo el siguiente archivo simple build.gradle:
apply plugin: 'application' apply plugin: 'java' mainClassName = 'com.kurtis.HelloGradle' Y el siguiente archivo java único ubicado en src/main/java/com/kurtis/HelloGradle.java :
package com.kurtis; public class HelloGradle { public static void main(String[] args) { System.out.println("Hello gradle"); } } Sin embargo, si ejecuto gradle build obtengo un jar en el directorio build/lib que no tiene una clase principal establecida. Su archivo de manifiesto no tiene entrada Main-Class . ¿Por qué es esto?
Se debe a la forma en que funciona el complemento de la aplicación. mainClassName es una propiedad utilizada por el complemento de la application , cuando crea un jar ejecutable, no necesita tener una Main-Class en el manifiesto, ya que no la usa.
Si necesita tener una Main-Class en su jar, entonces debe proporcionarla a través de la configuración vie jar del complemento java de la siguiente manera:
jar { manifest { attributes( 'Main-Class': 'com.kurtis.HelloGradle' ) } } De lo contrario, solo use un ejecutable, que es generado por el complemento de la aplicación, ya sea mediante una tarea de run o mediante distribuciones que puede crear para usted, con scripts para ejecutar su aplicación y todas sus dependencias.