首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从剧本执行java命令时遇到的问题

尝试从剧本执行java命令时遇到的问题
EN

Stack Overflow用户
提问于 2022-03-02 14:40:56
回答 1查看 237关注 0票数 0

我正在VM中自动化一些进程,我们目前正在使用java 17,并将jettys更新为jetty-11。因为在jetty-11中,主文件夹和基文件夹都是分开的,所以初始化jetty文件夹很重要。我需要从ansible (我在本地shell中找到了一个解决方案)来做,但是在ansible中尝试它是行不通的

代码语言:javascript
复制
- name: "Run initialization command" 
  shell: "nohup java -jar '{{ jetty_home }}'/start.jar jetty.base='{{ jetty_install_dir }}' --add-module=server,http,deploy,annotations,logging-jetty,jsp &"

当我运行剧本时没有明显的错误,只是

代码语言:javascript
复制
TASK [jetty-distribution : initialize jetty-base] **************************************************************************************************************************
changed: [****************************] (cutting the vm name off)

这个问题有什么解决办法吗?提前感谢

EN

回答 1

Stack Overflow用户

发布于 2022-03-03 16:37:23

您最明确地应该使用两个单独的目录。

(对于将来看到这一问题的其他人,请在此重复)

  1. jetty.home目录。

这是用于jetty发行版(或更现代的jetty-home tarball/zip)。

jetty.home目录是神圣的,不要编辑/更改/删除/添加/修改该目录中的任何内容。对于任何可能的配置,您不需要这样做(相信我)。

  1. jetty.base目录。

这是您的配置或Jetty实例的目录。

确保这个目录不嵌套在jetty.home目录内/外部,当升级(甚至降级)您的Jetty版本时,您的生活就会变得不必要的复杂。

接下来,当涉及到初始化时,关闭nuhup,这只会隐藏初始化过程中可能出现的任何错误。--add-module命令无论如何都是终端,它会做它需要做的事情,然后退出,它不是一个守护进程,并且一直在运行。如果不想看到输出,至少可以将其重定向到输出文件,如果有问题,可以询问。

也不要将其放在后台( &位于末尾),如果发生错误,退出代码将对您有用。

又名

代码语言:javascript
复制
java -jar /path/to/jetty-home/start.jar \
  jetty.home=/path/to/jetty-home \
  jetty.base=/path/to/my-jetty-base \
  --add-module=http,deploy,annotations,logging-jetty,jsp \
  2>&1 > /path/to/my-jetty-base/jetty-init.log

请记住,当添加某些模块时,需要用户交互(以接受许可证)。这可以通过使用--approve-all-licenses option on start.jar在脚本中处理。

最后,您确定ansible支持Jetty 11实现的"Jakarta“命名空间更改吗?

参见过去对此的回答:https://stackoverflow.com/a/66368511/775715

如果ansible已经更新到Jakarta 9,那么继续使用Jetty 11,如果没有,那么继续使用Jetty 10 (在Jakarta 8上),直到ansible赶上世界其他地方为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71324543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档