Java 从gradle重用资源

Java 从gradle重用资源,java,gradle,Java,Gradle,全部, 假设我有一个带有gradle的JAVA项目。 在buidl.gradle文件中,我有一个如下定义的属性: packageName = "svc.pvtbroker" //name of the package defaultConfig { ... buildConfigField("String", "API_KEY", "123456789") } defaultConfig { ... bu

全部,

假设我有一个带有gradle的JAVA项目。 在buidl.gradle文件中,我有一个如下定义的属性:

packageName = "svc.pvtbroker" //name of the package
    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", "123456789")
    }
    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", API_KEY_INSIDE_GRADLE_PROPERTIES)
    }
有没有一种简单的方法可以在Java源代码中使用这个packageName


蒂娅

Inside.app gradle按如下方式声明您的属性:

packageName = "svc.pvtbroker" //name of the package
    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", "123456789")
    }
    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", API_KEY_INSIDE_GRADLE_PROPERTIES)
    }
然后以以下方式在java源代码中导入属性:

import static yourpackage.BuildConfig.API_KEY;
暗示 我还在gradle.properties中声明我的密钥

API_KEY_INSIDE_GRADLE_PROPERTIES="123456789"
通过这种方式,您可以像这样使用BuildConfigField:

packageName = "svc.pvtbroker" //name of the package
    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", "123456789")
    }
    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", API_KEY_INSIDE_GRADLE_PROPERTIES)
    }

希望有帮助。

您可以生成java文件或资源,并将生成的文件夹添加到资源或编译的源代码中

比如说,我们希望packageName在运行时通过静态方法可用

task generateJava {
   // set inputs/outputs for up to date checks 
   inputs.property('packageName', project.property('packageName')) 
   outputs.dir "$buildDir/generated/java" 
   doLast {
      File f = file("$buildDir/generated/java/GradleProperties.java"
      f.parentFile.mkdirs()
      f.text = 
"""
public class GradleProperties {
   public static String getPackageName() {
      return \"${packageName}\";
   } 
}
"""
   } 
} 
// add the dir to the java sources 
sourceSets.main.java.srcDir "$buildDir/generated/java" 
// wire the task into the DAG
compileJava.dependsOn generateJava

你可以这样做我猜@anfreebano,两次声明的目的是什么?我想避免它,只在一个地方…如果你想在一个地方所有的属性,我认为gradle.properties是正确的地方。