在分叉模式下(默认)Grails在端口8091上打开一个套接字用于IPC目的。
如果任何其他非Grails进程已在该端口上进行侦听,则会得到以下输出:
|Loading Grails 2.5.0
|Configuring classpath
|Enter a script name to run. Use TAB for completion:
grails> |Stopping daemon...
grails> HTTP/1.1 400 Bad Request
grails> HTTP/1.1 400 Bad Request
grails> HTTP/1.1 400 Bad Request
grails> HTTP/1.1 400 Bad Request
grails> HTTP/1.1 400 Bad Request
... (forever)
如果另一个Grails实例正在侦听该端口,例如另一个用户的Grails(在多用户开发服务器中),那么你会得到一个很好的隐身错误:stop-app
返回没有错误,但它会阻止别人的嵌入式Tomcat,不是你的!
这显然是次优的,所以我需要一种方法让每个开发人员指定他或她的“守护程序端口”,以及他们的http端口(他们已经将server.port = N
放入~/.grails/settings.groovy
})
查看源代码,我在DEFAULT_DAEMON_PORT = 8091
顶部看到org.codehaus.groovy.grails.cli.fork.ForkedGrailsProcess
,但我没有看到任何明显的方法来自定义它。
有没有办法更改该端口,最好是来自用户的BulidSettings ~/.grails/settings.groovy
?如果没有,我会继续将其作为错误报告提交。
答案 0 :(得分:1)
找到它。感谢@vahid指点。
您必须将项目的grails.project.fork
中的整个BuildConfig.groovy
地图复制到~/.grails/settings.groovy
,并在最后添加不同的 daemonPort: N
值每个子地图(测试,运行,战争......)
示例:
grails.project.fork = [
test: [..., daemonPort: 8xx1],
run: [..., daemonPort: 8xx2],
war: [..., daemonPort: 8xx3],
console: [..., daemonPort: 8xx4],
]