我有一个包含多个.war包的多模块项目。我希望能够在父pom上'mvn jetty:run',并将每个子模块的.wars部署在同一个嵌入式jetty实例上。
我能够从每个子模块成功运行'mvn jetty:run',但是当我在父pom上运行它时,它会失败并跳过子模块。
尝试从父pom运行'mvn jetty:run'会产生以下结果:
[错误]无法执行目标 org.mortbay.jetty:maven-jetty-plugin:6.1.16:run default-cli)on project FlashCards_App:Webapp源目录C:\ dev \ sour ce_code \ FlashCards_App \ src \ main \ webapp不存在 - > [帮助1]
父pom上没有webapp目录。
这是我的pom的摘录。完整文件可以是found here。
<modules>
<module>FlashCards_Domain</module>
<module>FlashCards_GWT</module>
<module>FlashCards_Service</module>
<module>FlashCards_Service_SpringData</module>
<module>FlashCards_Service_Jpa</module>
<module>FlashCards_WebServices</module>
<module>FlashCards_Struts</module>
<module>FlashCards_Test</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>${jetty.version}</version>
</plugin>
</plugins>
</build>
这与2009年this post提出的问题基本相同。已经有几年了,我想知道现在是否有其他选择。上一篇文章提出了两个解决方案(1)使用货物插件和(2)从子模块中建立姐妹战争。
答案 0 :(得分:2)
您的最佳镜头可能是将jetty插件配置为run multiple webapps。我不确定它是否可以从您的父pom中运行,因此您可能必须使用您的模块作为“启动器”webapp,或在您的父项目中创建“虚拟webapp”。
答案 1 :(得分:2)
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.6.v20141205</version>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<webApp>
<contextPath>/</contextPath>
</webApp>
<contextHandlers>
<contextHandler implementation="org.eclipse.jetty.maven.plugin.JettyWebAppContext">
<war>${project.basedir}/app1/target/app1.war</war>
<contextPath>/app1</contextPath>
</contextHandler>
<contextHandler implementation="org.eclipse.jetty.maven.plugin.JettyWebAppContext">
<war>${project.basedir}/app2/target/app2.war</war>
<contextPath>/app2</contextPath>
</contextHandler>
</contextHandlers>
<stopPort>9999</stopPort>
<stopKey>STOP</stopKey>
</configuration>
</plugin>
答案 2 :(得分:1)
cd parent_module
mvn jetty:run -pl sub_module
答案 3 :(得分:0)
cd parent_module
mvn jetty:run -pl sub_module
要完成@jiahut答案:
$ mvn jetty:run --help
(...)
-am,--also-make If project list is specified, also
build projects required by the
list
-amd,--also-make-dependents If project list is specified, also
build projects that depend on
projects on the list
(...)
-pl,--projects <arg> Comma-delimited list of specified
reactor projects to build instead
of all projects. A project can be
specified by [groupId]:artifactId
or by its relative path
来自Apache Archiva的示例:
mvn jetty:run -pl :archiva-webapp -am