gpt4 book ai didi

java - 在 Reactor 项目中的单个 Maven 构建中运行 Java 应用程序和 Web 应用程序

转载 作者:行者123 更新时间:2023-11-30 07:35:39 24 4
gpt4 key购买 nike

我有一个具有以下结构的 react 器项目

server
- pom.xml (parent)
-- appserver (has a server socket)
-- webserver (connects to the socket in appserver and gets data)

appserver pom.xml 有一个 maven-exec-plugin,它运行我的 java 类 AppServer 中的 main 方法。

当我在最顶层(服务器)项目中运行目标验证时,我的构建陷入了 appserver - exec goal,并且永远不会继续构建/运行我的网络服务器。

理想情况下,我想首先运行我的应用程序服务器,然后在一次安装中运行我的网络服务器,或者验证在我最上面的项目上运行。

这是我的 appserver pom 中的 exec maven 插件配置。

<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>somepackage.AppServer</mainClass>
</configuration>

我知道以前也有人问过许多类似性质的其他问题,大多数答案都围绕着使用 antrun 插件的 shell 脚本,几乎所有问题都至少有 3/4 年的历史,我希望有更多的新解决方案现已提供独立于平台的方式。

最佳答案

不幸的是,没有比针对您的用例使用 maven-antrun-plugin 更好的解决方案了。 maven-exec-plugin可用于启动外部进程,无论是在与java相同的VM中目标或在具有 exec 的 fork 虚拟机中目标,但在这两种情况下,它都会受到阻碍;这意味着插件将等待执行完成。如前所述启动 Shell 脚本的可能解决方法 herehere在Linux环境下运行良好。但是,它不适用于您的情况,因为您需要支持多个环境。

maven-antrun-plugin ,您可以使用Exec任务并将 spawn 属性设置为 true。这将导致 Ant 在后台运行该任务。示例配置如下:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase> <!-- a lifecycle phase --> </phase>
<configuration>
<target>
<property name="runtime_classpath" refid="maven.runtime.classpath" />
<exec executable="java" spawn="true">
<arg value="-classpath"/>
<arg value="${runtime_classpath}"/>
<arg value="somepackage.AppServer"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

请注意,这使用 maven.runtime.classpath引用包含所有运行时依赖项的 Maven 类路径(有关详细信息,请参阅 here)。

关于java - 在 Reactor 项目中的单个 Maven 构建中运行 Java 应用程序和 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437358/

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