【发布时间】:2013-02-15 09:10:32
【问题描述】:
我有一个多模块 maven 项目,其中一个模块用于分发。
Project \
| moduleA \
| moduleB \
| ...
| dist-module \
该发行版包含一个我想轻松执行的可执行 jar。但是,要执行它,我必须输入如下内容:
java -jar dist-module/target/dist-module-1.0-SNAPSHOT-full-dist/myJar.jar
最好直接输入:
mvn exec:java \ OR
mvn exec:exec
不幸的是,我找不到让 java 目标执行 .jar 的方法。 exec 目标实际上会这样做,但有一个问题:jar 包含一个嵌入式码头服务器,并且由于 exec 的工作方式(不使用与 maven 相同的 JVM),除非我终止该进程,否则服务器不会终止手动,同样麻烦。
关于如何使用 maven 执行此操作的任何建议?
编辑:
为澄清起见,此命令将主要用于简单的手动冒烟测试;读取日志输出并确保程序在其分发环境中正确启动。因此,它可能应该是一个阻塞调用,使用 ctrl-c 终止服务器和 maven。
嵌入式服务器专门用于运行一些特定的应用程序,并且不会自动重新加载它们。因此,没有必要让服务器长时间独立于 maven 运行。
【问题讨论】:
-
码头的任务是什么?
-
你能把有问题的 exec:java 目标定义附加到 pom 上吗?
-
没有什么好办法,因为maven是一个构建和部署工具。如果您的 jar 是构建过程的一部分,则为它编写一个 maven 插件。如果你只是想使用 maven 来运行你的应用程序,也许考虑别的更好。
-
您希望在 maven 完成后终止服务器,或者您希望通过其他方式停止它?
标签: java maven build jar embedded-jetty