Повторное использование ресурса из Gradle - PullRequest
0 голосов
/ 28 июня 2019

ALL,

Допустим, у меня есть проект JAVA с Gradle.В файле buidl.gradle у меня есть свойство, определенное следующим образом:

packageName = "svc.pvtbroker" //name of the package

Есть ли простой способ использовать это "packageName" внутри исходного кода Java?

TIA !!

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Вы можете сгенерировать либо файл 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
0 голосов
/ 28 июня 2019

Внутри .app gradle объявите свою собственность следующим образом:

    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", "123456789")
    }

, затем импортируйте свою собственность в исходный код Java следующим образом:

import static yourpackage.BuildConfig.API_KEY;

ПРЕДЛОЖЕНИЕ Я также объявляю свои ключивнутри gradle.properties

API_KEY_INSIDE_GRADLE_PROPERTIES="123456789"

таким образом вы можете использовать BuildConfigField следующим образом:

    defaultConfig {
        ...
        buildConfigField("String", "API_KEY", API_KEY_INSIDE_GRADLE_PROPERTIES)
    }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...