gpt4 book ai didi

java - 如何构建整个项目,然后在单个模块中运行插件目标?

转载 作者:行者123 更新时间:2023-12-02 12:03:31 26 4
gpt4 key购买 nike

我有一个网络应用程序项目,其结构如下:

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 设置为仅将项目构建为运行配置的一部分,但我希望尽可能保留非 IDE 特定的内容,并尽可能将其作为一个认知步骤。

有没有一种方法可以在一行或配置中告诉 Maven:

  1. 编译整个项目;然后
  2. tomcat6:run foo-web 子模块?

最佳答案

您可以创建附加到 maven phases 之一的 tomcat maven 插件 的执行。 。由于您希望它在所有内容都编译完成后运行,因此 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

关于java - 如何构建整个项目,然后在单个模块中运行插件目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com