Java 使用gradle任务在jar中设置变量值

Java 使用gradle任务在jar中设置变量值,java,gradle,jar,Java,Gradle,Jar,我有一个客户端和服务器架构 客户端是一个可运行的.jar文件,使用以下Gradle任务构建: jar { archiveName = "app.jar" from sourceSets.main.output.classesDir include '**/*.class' manifest { attributes 'Main-Class': 'com.bobbyrne01.app.Main' } exclude 'META-INF

我有一个客户端和服务器架构

客户端是一个可运行的
.jar
文件,使用以下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'
}
我正在更改此客户端的身份验证方式

问题是,我想指定客户端在构建过程中应该使用哪种身份验证方法

因此,当用户下载
.jar
时,他们只需运行它,在构建过程中激活的任何身份验证方法都将在
.jar
中激活

设置此
authenticationType
变量/标志的最佳方法是什么

对于服务器,有一个用于身份验证的接口和许多实现不同身份验证方法的类。在构建服务器时,我指定了一个gradle属性,该属性被设置为docker映像上的环境变量。 因此,在运行时,服务器使用反射来确定实例化哪个身份验证类


但是我不确定如何在jar中设置类似的值。

使用一个属性文件,该文件包含一个值,允许在运行时决定要使用哪个身份验证机制

定义为

authentication=${authentication} or 

在源属性文件中。并在标准的
processResources
gradle任务(类型为
Copy
)中使用expand或filter,以将占位符替换为要使用的实际值


请参阅和。

使用包含一个值的属性文件,该值允许在运行时决定要使用的身份验证机制

定义为

authentication=${authentication} or 

在源属性文件中。并在标准的
processResources
gradle任务(类型为
Copy
)中使用expand或filter,以将占位符替换为要使用的实际值

见和