我有一个Web应用程序项目结构化或者像这样:
foo
│ pom.xml
│
├───foo-backend
│ pom.xml
│
└───foo-web
pom.xml
模块foo-web
取决于foo-backend
。
父POM包含嵌套项目作为模块:
...
<modules>
<module>foo-backend</module>
<module>foo-web</module>
</modules>
...
foo-web
模块使Tomcat插件能够正确运行此应用程序,而无需进行单独的应用服务器安装:
...
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<configuration>
...
</configuration>
</plugin>
...
我遇到的问题是,如果我只为foo-web
运行此插件,则模块foo-backend
不会重建,而是使用任何旧的构建输出。
我将IDEA设置为只是将项目构建为运行配置的一部分,但我希望尽可能多地保留这些项目,并尽可能保持认知步骤。
有没有办法告诉Maven使用单行或配置:
compile
整个项目;然后tomcat6:run
foo-web
子模块?答案 0 :(得分:1)
您可以创建附加到maven phases之一的tomcat maven plugin
的执行。由于您希望它在所有内容都是编译器之后运行,因此阶段process-classes
似乎是合适的。
此外,我假设您在尝试运行maven阶段时不想始终运行tomcat,因此最好有条件地执行此
<profiles>
<profile>
<activation>
<property>
<name>runTomcat</name>
</property>
</activation>
<id>run-tomcat-on-compile</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<executions>
<execution>
<id>one</id>
<phase>process-classes</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
编译并运行tomcat:
mvn process-classes -PrunTomcat