在战争模块内部创建一个配置文件(project-war
)。在此配置文件中,将jetty配置为附加到生命周期阶段并明确执行目标。现在,当maven从启用了该配置文件的顶级项目运行时,它将调用jetty:run并具有姐妹模块依赖关系解析(当执行来自顶级项目的maven命令时正常)。
示例配置放置在Web模块(project-war
)的pom.xml中时,会安排码头:运行以在test
阶段执行。 (您可以选择另一个阶段,但要确保它在compile
之后。)
从顶层运行:mvn test -Pjetty-run
或mvn test -DskipTests=true -Pjetty-run
。这将根据需要编译依赖关系,并使其可用但调用jetty:在正确的模块中运行。
<profiles>
...
<!-- With this profile, jetty will run during the "test" phase -->
<profile>
<id>jetty-run</id>
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.1.6.v20100715</version>
<configuration>
...
<webAppSourceDirectory>
${project.build.directory}/${project.build.finalName}
</webAppSourceDirectory>
...
</configuration>
<executions>
<execution>
<id>jetty-run</id>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
...
</profiles>
嗯,这实际上并没有帮助我,因为它会因BUILD错误“无法解析工件”而失败。 (兄弟JAR项目)在Jetty插件甚至被执行之前。所以看起来我首先需要Maven的一个通用解决方案。 :( – 2010-09-04 16:47:17
@LukášMaven使用本地资源库来解决依赖关系,所以他们必须被安装(也就是说,您需要先安装所有模块,方法是在父级上至少运行一次反应堆构建)。工作,即使安装的JAR是“过时的” – 2010-09-04 17:00:33
啊,我希望避免这种情况,我发现的另一种方法是在父级上设置码头插件并将其指向正确的war文件(然后使用jetty:run -war),但我可能需要运行安装以使NetBeans高兴。 – 2010-09-04 17:08:59