这是我想做的事情。我创建了一个maven项目并在eclipse中为其配置了jetty插件...
因此,如果我在 Eclipse 中运行并将 Maven 目标设置为 jetty:run
,它将在 jetty 中的 web.xml 中指定的端口上运行我的项目。现在我想构建 jar 文件,当我执行 java -jar myapp.jar
时,它会自动调用 jetty:run
。
我该怎么做?
最佳答案
如果您想打包您的应用程序,以便可以将其交给某人并让他们将其作为独立应用程序运行,而无需将 war 文件部署到 Web 容器中,那么这与执行 mvn jetty:run
在开发时,我会调用该部署时间以避免任何困惑
在部署时,我们不能假设机器上会有maven,因此没有mvn jetty:run
,即使有,这也不起作用,除非我们提供源代码像在开发环境中一样运行构建的代码!
可以通过将应用程序 war 中的 jetty jar 与 Main 类捆绑在一起来打包独立的 Web 应用程序,以编程方式启动 jetty,并让它运行应用程序 war 。这依赖于这样一个事实:WAR 和 JAR 的文件和目录结构不同,因此两者之间没有明显的重叠,这就是使这种解决方法成为可能的原因,并且还留下了将 war 文件部署在可能的网络容器
有一个 maven plugin嵌入 winstone这是另一个轻量级 servlet 容器
对于 jetty ,您可以从阅读 Embedded Jetty 7 webapp executable with Maven 开始
关于从 Jar 运行 Maven Jetty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191530/