gpt4 book ai didi

java - Gradle 删除注释并重新格式化属性文件

转载 作者:行者123 更新时间:2023-11-30 05:41:46 25 4
gpt4 key购买 nike

当我尝试在 Gradle 中编辑属性时,它会重新格式化我的整个属性文件并删除注释。我假设这是因为 Gradle 读取和写入属性文件的方式所致。我只想更改属性并保留属性文件的其余部分不变,包括保留当前注释和值的顺序。使用 Gradle 5.2.1 可以做到这一点吗?

我尝试只使用 setProperty (它不会写入文件),使用不同的编写器:(versionPropsFile.withWriter { versionProps.store(it, null) } )

并尝试了不同的方式来读取属性文件:versionProps.load(versionPropsFile.newDataInputStream())

这是我当前的 Gradle 代码:

   File versionPropsFile = file("default.properties");

def versionProps = new Properties()

versionProps.load(versionPropsFile.newDataInputStream())

int version_minor = versionProps.getProperty("VERSION_MINOR")
int version_build = versionProps.getProperty("VERSION_BUILD")

versionProps.setProperty("VERSION_MINOR", 1)
versionProps.setProperty("VERSION_BUILD", 2)

versionPropsFile.withWriter { versionProps.store(it, null) }

这是属性文件在 gradle 接触之前的样子:

# Show splash screen at startup (yes* | no)
SHOW_SPLASH = yes

# Start in minimized mode (yes | no*)
START_MINIMIZED = no

# First day of week (mon | sun*)
# FIRST_DAY_OF_WEEK = sun

# Version number
# Format: MAJOR.MINOR.BUILD

VERSION_MAJOR = 1
VERSION_MINOR = 0
VERSION_BUILD = 0

# Build value is the date

BUILD = 4-3-2019

以下是 Gradle 对其所做的操作:

#Wed Apr 03 11:49:09 CDT 2019
DISABLE_L10N=no
LOOK_AND_FEEL=default
ON_MINIMIZE=normal
CHECK_IF_ALREADY_STARTED=YES
VERSION_BUILD=0
ASK_ON_EXIT=yes
SHOW_SPLASH=yes
VERSION_MAJOR=1
VERSION_MINOR=0
VERSION_BUILD=0
BUILD=04-03-2019
START_MINIMIZED=no
ON_CLOSE=minimize
PORT_NUMBER=19432
DISABLE_SYSTRAY=no

最佳答案

这本身不是 Gradle 问题。 Java 默认的 Properties 对象不保留属性文件的任何布局/注释信息。您可以使用Apache Commons Configuration ,例如,获取布局保留属性文件。

这是一个独立的示例 build.gradle 文件,用于加载、更改和保存属性文件,保留注释和布局信息(至少达到示例文件所需的程度):

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.apache.commons:commons-configuration2:2.4'
}
}

import org.apache.commons.configuration2.io.FileHandler
import org.apache.commons.configuration2.PropertiesConfiguration
import org.apache.commons.configuration2.PropertiesConfigurationLayout

task propUpdater {
doLast {
def versionPropsFile = file('default.properties')

def config = new PropertiesConfiguration()
def fileHandler = new FileHandler(config)
fileHandler.file = versionPropsFile
fileHandler.load()

// TODO change the properties in whatever way you like; as an example,
// we’re simply incrementing the major version here:
config.setProperty('VERSION_MAJOR',
(config.getProperty('VERSION_MAJOR') as Integer) + 1)

fileHandler.save()
}
}

关于java - Gradle 删除注释并重新格式化属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com