我正在将Grails 2.5应用程序迁移到Grails 3.0.9
并且在grails-app/init/BootStrap.groovy
中读取类路径资源时遇到一些问题。
在Grails 2.5.x中,当将资源文件放入与ClassPathResource
BootStrap.groovy
访问资源(例如文本文件)
def file1 = new ClassPathResource('my-textfile.txt').file
在Grails 3中,当我使用grails run-app
启动应用程序时,它可以正常工作。所有资源均来自src/main/resources
。但是如果我使用IntelliJ中的Spring Boot Application(位于/grails-app/init/a/b/Application.groovy
)类启动应用程序,BootStrap.groovy就会再找到资源。
使用BootStrap.groovy
启动应用时,是否有人知道如何在Grails 3.0.9中的Application.groovy
内访问这些文件?
答案 0 :(得分:1)
根据Gradle惯例,我将资源放在src/main/resource
下,因为它们需要在运行时可访问。
由于某些原因,我的grails-app/init/a/b/Application.groovy
无法找到这些资源,因此我必须将符号链接放到grails-app/init/a/b
。之后一切都按预期工作。
答案 1 :(得分:0)
class BootStrap {
def init = { servletContext ->
def config = new ConfigSlurper().parse(new File("${System.properties['user.dir']}/grails-app/conf/test.groovy").toURL())
println config
println config.hfy.test
}
def destroy = {
}
}
$ {System.properties ['user.dir']}:项目目录