gpt4 book ai didi

grails - 从插件内修改项目配置的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 03:41:22 25 4
gpt4 key购买 nike

当我尝试编写 Grails 插件时,我偶然发现了两个问题:

  • 如何在 _install.groovy 脚本中修改配置文件之一,例如 Config.groovyDataSource.groovy?向这些文件添加一些内容很容易,但是如何以干净的方式对其进行修改呢? text.replaceAll()?或者我应该创建一个新的配置文件?
  • 如何获取要安装插件的当前应用程序的名称?我尝试使用 app.nameappName 但两者都不起作用。

是否有关于创建插件的好教程,但我还没有找到?

最佳答案

以下是从 scripts/_Install.groovy 编辑配置文件的示例。
我的插件将三个文件复制到目标目录。

  • .hgignore用于版本控制,
  • DataSource.groovy 替换默认版本,
  • SecurityConfig.groovy 包含额外的设置。

我更喜欢尽可能少地编辑应用程序的文件,特别是因为我希望在几年后更改安全设置。我还需要使用 jcc-server-config.properties 文件中的属性,该文件是为我们系统中的每个应用程序服务器定制的。

复制文件很容易。

println ('* copying .hgignore ')
ant.copy(file: "${pluginBasedir}/src/samples/.hgignore",
todir: "${basedir}")
println ('* copying SecurityConfig.groovy')
ant.copy(file: "${pluginBasedir}/src/samples/SecurityConfig.groovy",
todir: "${basedir}/grails-app/conf")
println ('* copying DataSource.groovy')
ant.copy(file: "${pluginBasedir}/src/samples/DataSource.groovy",
todir: "${basedir}/grails-app/conf")

困难的部分是让 Grails 选择新的配置文件。为此,我必须编辑应用程序的 grails-app/conf/Config.groovy。我将添加两个可在类路径上找到的配置文件。

println ('* Adding configuration files to grails.config.locations');
// Add configuration files to grails.config.locations.
def newConfigFiles = ["classpath:jcc-server-config.properties",
"classpath:SecurityConfig.groovy"]
// Get the application's Config.groovy file
def cfg = new File("${basedir}/grails-app/conf/Config.groovy");
def cfgText = cfg.text
def appendedText = new StringWriter()
appendedText.println ""
appendedText.println ("// Added by edu-sunyjcc-addons plugin");
// Slurp the configuration so we can look at grails.config.locations.
def config = new ConfigSlurper().parse(cfg.toURL());
// If it isn't defined, create it as a list.
if (config.grails.config.locations.getClass() == groovy.util.ConfigObject) {
appendedText.println('grails.config.locations = []');
} else {
// Don't add configuration files that are already on the list.
newConfigFiles = newConfigFiles.grep {
!config.grails.config.locations.contains(it)
};
}
// Add each surviving location to the list.
newConfigFiles.each {
// The name will have quotes around it...
appendedText.println "grails.config.locations << \"$it\"";
}
// Write the new configuration code to the end of Config.groovy.
cfg.append(appendedText.toString());

唯一的问题是将 SecurityConfig.groovy 添加到类路径中。我发现您可以通过在插件的 /scripts/Events.groovy 中创建以下事件来做到这一点。

eventCompileEnd = {
ant.copy(todir:classesDirPath) {
fileset(file:"${basedir}/grails-app/conf/SecurityConfig.groovy")
}
}

编辑。

关于grails - 从插件内修改项目配置的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740218/

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