如何将Grails的“守护程序端口”从8091更改为其他内容?

时间:2015-05-06 14:24:50

标签: grails

在分叉模式下(默认)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?如果没有,我会继续将其作为错误报告提交。

1 个答案:

答案 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],
]