我有一套我管理的网络应用程序,我正在努力转移到maven。
/pom.xml // parent pom webapp1/pom.xml // configured to point to parent webapp2/pom.xml // peer of webapp1 and points to parent.
每个webapps都引用父pom,它们目前都有一个可以工作的jetty maven插件。
我的问题是我如何从父pom挂载每个webapps,以便mvn jetty:run在父目录中工作?
编辑给anwer:Pascal T. 问题不在于我在尝试从根pom运行命令时遇到错误,但我不确定如何配置它。
例如webapp1 / pom.xml 看起来像:
<project>
...
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>
...
</project>
更改到此目录并输入mvn jetty:run工作正常,并且我能够点击:http://localhost:8080/webapp1。
但是,我想要的是在webapp1的父级中,并从父目录运行所有'n'webapps。因此,在一个命令行参数中可以使用http://localhost:8080/webapp1和http://localhost:8080/webapp2。
不过,如果答案涉及一个tomcat插件,那就没问题。答案 0 :(得分:10)
编辑:我已经完全编辑了我的第一个答案,因为我对OP的期望有了更好的理解。
查看Cargo,一个瘦包装器,它允许您以标准方式操作Java EE容器。
实际上,Cargo的网站上有一个tutorial,它演示了如何使用Cargo Maven2插件自动启动/停止容器(可能在启动时部署一些可展开的容器),这就是你所要的寻找我所理解的。
我只是不确定从父目录执行此操作是否可行,是否需要或者是否可以从其他目录执行此操作。我稍后会再回来看看。让我们先来看看Cargo Maven2插件设置。
在您的情况下,您可以从最小配置开始(使用Jetty 5.x这是Cargo的默认容器):
[...]
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
</plugin>
</plugins>
</build>
[...]
如果您想使用Jetty 6.x,则必须在<containerId>
元素中指定<type>
和<container>
:
[...]
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>jetty6x</containerId>
<type>embedded</type>
</container>
</configuration>
</plugin>
[...]
然后,通过在插件配置中明确定义 deployables 来添加要部署的模块(有关配置的详细信息,请参阅Maven2 Plugin Reference Guide):
<deployables>
<deployable>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject-alpha</artifactId>
<type>war</type>
<properties>
<context>optional alpha root context</context>
</properties>
</deployable>
<deployable>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject-beta</artifactId>
<type>war</type>
<properties>
<context>optional beta root context</context>
</properties>
</deployable>
[...]
</deployables>
有了这个,您应该能够启动Jetty并使用简单的部署Web应用程序(从包含货物插件配置的项目运行):
$ mvn cargo:start
我只是不确定这可以与父pom一起使用(我想知道这是否会导致循环依赖问题)并且我没有测试它。但就个人而言,我会把所有这些东西都放在一个专门的项目中,例如:在您的webapps的兄弟项目中,而不是在父pom中。我不认为这是一个非常重要的事情,这是恕我直言,一个更好的设置,特别是如果你打算使用货物integration testing。
答案 1 :(得分:6)
也许此链接可以解决您的问题:
<击> http://www.jiajia.eu/post/2008/10/08/Deploy-multiple-web-apps-with-maven-jetty-plugin.aspx 击>
上面的链接已损坏,所以这里有一个新链接:
http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin
请参阅“运行多个Web应用程序”一节。