Tengo una arquitectura de cliente y servidor.

El cliente es un archivo .jar ejecutable creado con la siguiente tarea de Gradle:

jar {
    archiveName = "app.jar"
    from sourceSets.main.output.classesDir
    include '**/*.class'
    manifest {
        attributes 'Main-Class': 'com.bobbyrne01.app.Main'
    }
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}

Estoy haciendo un cambio en la forma en que este cliente se autenticará.

El problema es que me gustaría especificar qué método de autenticación debe usar el cliente durante la compilación.

De modo que cuando el usuario descargue el .jar, simplemente lo ejecutará y el método de autenticación que activé durante la compilación estará activo en el .jar.

¿Cuál sería la mejor manera de configurar esta variable / bandera authenticationType?

Para el servidor, hay una interfaz para la autenticación y varias clases que implementan diferentes métodos de autenticación. Mientras construyo el servidor, especifico una propiedad gradle que se establece como una variable de entorno en la imagen de la ventana acoplable. Entonces, en tiempo de ejecución, el servidor usa la reflexión para determinar qué clase de autenticación instanciar.

Pero no estoy seguro de cómo puedo establecer un valor similar dentro del frasco.

1
bobbyrne01 15 oct. 2019 a las 19:16

1 respuesta

La mejor respuesta

Utilice un archivo de propiedades que contenga un valor que le permita decidir, en tiempo de ejecución, qué mecanismo de autenticación desea utilizar.

Defínalo como

authentication=${authentication} or 

O

authentication=@@authentication@@

En el archivo de propiedades de origen. Y use expandir o filtrar en la tarea gradle estándar processResources (de tipo Copy) para reemplazar el marcador de posición por el valor real que desea usar.

Consulte https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:expand (java.util. Map) y https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle .api.tasks.Copy: filter (java.util.Map,% 20java.lang.Class).

0
JB Nizet 15 oct. 2019 a las 17:07