gpt4 book ai didi

java - 如何配置maven exec以运行从其pom.xml部署的jar中的类?

转载 作者:行者123 更新时间:2023-12-01 11:29:25 24 4
gpt4 key购买 nike

我的希望是,只需部署 pom.xml 并使用 maven exec 目标,就可以轻松地让 Maven 在任何计算机上运行我们的应用程序。

要运行的主类位于从相同的 pom.xml 生成的 jar 内。但看起来,虽然 Maven 很好地包含了类路径上的所有依赖项,但 pom 的 jar 没有包含在内,否则无法从 Maven 部署它的存储库(这是一个内部非公共(public)存储库)解析它。

我遵循的步骤:

  1. 运行mvn部署——这会将我们的jar部署到内部 maven存储库
  2. 在目标机器上安装maven(与构建机器不同)
  3. 将 pom.xml 部署到目标计算机。
  4. 尝试使用mvn exec:java ...mvn exec:exec ...运行

我看到的是,Maven 正确地将所有依赖项 jar 拉到类路径中,但没有拉入 pom.xml 描述的 jar。

我在 pom.xml 中尝试了各种配置选项,但似乎没有任何效果。首先,尝试配置 exec:java,如 this answer 所示。 ,但 Maven 没有在内部存储库中搜索该 jar。 (不过它似乎确实检查了公共(public) Maven 存储库)。

其次,我尝试切换到 exec:exec 版本并进行如下配置:

        <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>

<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>com.ezxinc.tfix.TFix</argument>
</arguments>
</configuration>
<dependencies>
<dependency>
<groupId>ezxinc</groupId>
<artifactId>tfix</artifactId>
<version>0.0.3-SNAPSHOT</version>
<type>jar</type>
</dependency>
</dependencies>
</plugin>

显示的依赖项包含 pom.xml 部署到我们内部存储库中的 jar 的信息。

当然,如果我将类文件解压到 pom.xml 所在目录下的 target 子目录中,一切都会正常工作。

如果有帮助,可以查看完整的pom.xml here .

最佳答案

我认为您需要有一个不同的 pom.xml 文件,而不是尝试使用在描述的步骤 1 中构建的项目中的相同 pom。然后,这个单独的 pom 文件可以将相关项目作为依赖项包含在内,以便在运行 Maven 命令时将其下载并包含在类路径中。

问题在于,maven 假设 pom 文件描述的项目将从源代码编译,而不是从存储库下载。您想要从存储库下载的任何内容都需要成为依赖项,如果您尝试将当前项目作为其自身的依赖项包含在内,您最终会遇到一个问题,即该项目永远无法第一次构建,因为它尚未构建尚未构建并部署到存储库。

关于java - 如何配置maven exec以运行从其pom.xml部署的jar中的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30539919/

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