Java 在没有maven jetty的情况下从命令行运行战争

Java 在没有maven jetty的情况下从命令行运行战争,java,maven,jetty,Java,Maven,Jetty,我试图将一个开源软件放在docker容器()中,但是在这个容器中我不能使用maven。运行此服务的文档中说要使用mvn jetty,它确实可以很好地工作,但是为了在容器中实现这一点,我不想包含构建步骤(maven) 相反,我想要一种编译war的方法,这样我就可以将war复制到容器中并从那里执行它 我已经尝试了很多尝试,试图让战争在没有maven jetty的情况下进行,但都没有成功 java-jar/path/to/jar 没有主清单属性错误。没有主类,它扩展了一个HttpServlet 使用码

我试图将一个开源软件放在docker容器()中,但是在这个容器中我不能使用maven。运行此服务的文档中说要使用mvn jetty,它确实可以很好地工作,但是为了在容器中实现这一点,我不想包含构建步骤(maven)

相反,我想要一种编译war的方法,这样我就可以将war复制到容器中并从那里执行它

我已经尝试了很多尝试,试图让战争在没有maven jetty的情况下进行,但都没有成功

  • java-jar/path/to/jar 没有主清单属性错误。没有主类,它扩展了一个HttpServlet

  • 使用码头转轮 当我通过命令行启动与jetty runner的war时,我没有得到任何错误,但它会引导到一个页面,显示文件目录,而不是实际的项目

  • 制作一个“uber jar”来打包所有DEP 与1相同的问题,获取无主清单问题

  • 如果有帮助的话,我可以包含更多的代码(pom文件等),但如果不需要的话,我不想添加太多。我非常不熟悉java项目是如何打包和部署的,所以我很难弄清楚需要做什么


    谢谢

    Minimal
    Dockerfile
    使用您的webapp/war文件是

    FROM jetty:9.4.18
    ADD ROOT.war /var/lib/jetty/webapps/
    
    这使用了位于
    的jetty docker官方图像

    管理于

    名称
    ROOT.war
    是特殊的,它将在
    “/”的“ROOT”上下文路径中部署您的webapp

    建筑形象 如果你像这样建造它

    $docker build-t stackoverflow/jetty:最新版本。
    
    运行图像 以交互方式(因此您可以查看日志)

    $docker run--interactive--tty--rm--publish 80:8080 stackoverflow/jetty:最新版本
    
    作为守护进程

    $ docker run --detach --publish 80:8080 stackoverflow/jetty:latest
    
    服务器将在运行
    docker run
    命令的机器的端口80上可用

    配置码头基地 如果需要配置jetty映像,可以使用任何标准的
    start.jar
    命令

    例如:

    FROM jetty:9.4.18
    WORKDIR $JETTY_BASE
    RUN java -jar $JETTY_HOME/start.jar --add-to-start=jsp
    ADD ROOT.war /var/lib/jetty/webapps/
    
    没有Maven,这是如何工作的 查看官方图片详细信息

    关键命令是

    WORKDIR $JETTY_BASE
    ENTRYPOINT ["/docker-entrypoint.sh"]
    CMD ["java","-jar","/usr/local/jetty/start.jar"]
    

    谢谢,但我得到的问题,似乎是特定的战争,没有出现时,运行与maven。maven对战争的包装有什么不同吗?