プロパティファイルを読み取り、プロジェクトのGradleスクリプトで値を使用するにはどうすればいいですか? 質問する

プロパティファイルを読み取り、プロジェクトのGradleスクリプトで値を使用するにはどうすればいいですか? 質問する

私は、ファイルを読み取りlocal.properties、プロパティ ファイルの値を使用する必要がある Gradle スクリプトに取り組んでいますbuild.gradle。私は以下の方法でそれを行っています。以下のスクリプトを実行したところ、エラーが発生していますが、ファイルの作成、削除、コピーなどの操作も行われていません。変数の値を印刷しようとしましたが、正しい値が表示されています。

これが正しい方法かどうか、誰か教えていただけませんか? 他の方法は、 ですべてを定義しgradle.properties、 で使用することだと思います。からbuild.gradleのプロパティにアクセスする方法を教えてください。build.gradlebuild.properties

build.gradleファイル:

apply plugin: 'java'

// Set the group for publishing
group = 'com.true.test'

/**
 * Initializing GAVC settings
 */
def buildProperties = new Properties()
file("version.properties").withInputStream {
        stream -> buildProperties.load(stream)
}
// If jenkins build, add the jenkins build version to the version. Else add snapshot version to the version.
def env = System.getenv()
if (env["BUILD_NUMBER"]) buildProperties.test+= ".${env["BUILD_NUMBER"]}"
version = buildProperties.test
println "${version}"

// Name is set in the settings.gradle file
group = "com.true.test"
version = buildProperties.test
println "Building ${project.group}:${project.name}:${project.version}"

Properties properties = new Properties()
properties.load(project.file('build.properties').newDataInputStream())
def folderDir = properties.getProperty('build.dir')
def configDir = properties.getProperty('config.dir')
def baseDir  = properties.getProperty('base.dir')
def logDir  = properties.getProperty('log.dir')
def deployDir  = properties.getProperty('deploy.dir')
def testsDir  = properties.getProperty('tests.dir')
def packageDir  = properties.getProperty('package.dir')
def wrapperDir  = properties.getProperty('wrapper.dir')


sourceCompatibility = 1.7
compileJava.options.encoding = 'UTF-8'

repositories {
     maven { url "http://arti.oven.c:9000/release" }
  }

task swipe(type: Delete) {
         println "Delete $projectDir/${folderDir}"
         delete "$projectDir/$folderDir"
         delete "$projectDir/$logDir"
         delete "$projectDir/$deployDir"
         delete "$projectDir/$packageDir"
         delete "$projectDir/$testsDir"
         mkdir("$projectDir/${folderDir}")
         mkdir("projectDir/${logDir}")
         mkdir("projectDir/${deployDir}")
         mkdir("projectDir/${packageDir}")
         mkdir("projectDir/${testsDir}")
}
task prepConfigs(type: Copy, overwrite:true, dependsOn: swipe) {
    println "The name of ${projectDir}/${folderDir} and ${projectDir}/${configDir}"
    from('${projectDir}/${folderDir}')
    into('${projectDir}/$configDir}')
    include('*.xml')
}

build.propertiesファイル:

# -----------------------------------------------------------------
# General Settings
# -----------------------------------------------------------------
application.name  = Admin
project.name = Hello Cool

# -----------------------------------------------------------------
# ant build directories
# -----------------------------------------------------------------
sandbox.dir = ${projectDir}/../..
reno.root.dir=${sandbox.dir}/Reno
ant.dir = ${projectDir}/ant
build.dir = ${ant.dir}/build
log.dir  = ${ant.dir}/logs
config.dir = ${ant.dir}/configs
deploy.dir  = ${ant.dir}/deploy
static.dir =  ${ant.dir}/static
package.dir = ${ant.dir}/package
tests.dir = ${ant.dir}/tests
tests.logs.dir = ${tests.dir}/logs
external.dir = ${sandbox.dir}/FlexCommon/External
external.lib.dir = ${external.dir}/libs

ベストアンサー1

デフォルトのgradle.propertiesファイルを使用する場合は、ファイル内から直接プロパティにアクセスできますbuild.gradle

gradle.properties:

applicationName=Admin
projectName=Hello Cool

build.gradle:

task printProps {
    doFirst {
        println applicationName
        println projectName
    }
}

カスタム ファイルにアクセスする必要がある場合、またはカスタム.ファイルに含まれるプロパティにアクセスする必要がある場合 (必要なようです)、build.gradleファイル内で次の操作を実行できます。

def props = new Properties()
file("build.properties").withInputStream { props.load(it) }

task printProps {
    doFirst {
        println props.getProperty("application.name")
        println props.getProperty("project.name")
    }
}

を見てみましょうGradleドキュメントのこのセクション詳細については。

編集

これらのプロパティの一部を動的に設定したい場合 (以下のコメントで述べたように)、ファイルproperties.gradle(名前は重要ではありません) を作成し、build.gradleスクリプトでそれを要求することができます。

properties.gradle:

ext {
    subPath = "some/sub/directory"
    fullPath = "$projectDir/$subPath"
}

build.gradle

apply from: 'properties.gradle'

// prints the full expanded path
println fullPath

おすすめ記事