gpt4 book ai didi

java - 是否有运行非 fat jar 的 Maven 插件?

转载 作者:行者123 更新时间:2023-12-01 20:17:32 31 4
gpt4 key购买 nike

想象一个普通的 java maven 项目,它有一个生成 Artifact project-a.jar 的 Main 类。该项目依赖于project-b.jar。

是否有一个 Maven 插件允许通过这样的命令运行该 jar?

mvn run-plugin:run org.mygroup:project-a:3.1 <args>

该插件将解析运行时依赖项(使用 META-INF/maven/(...)/pom.xml),将项目及其依赖项安装到本地 Maven 存储库(如果尚未存在),构建类路径并调用

java -cp (...)/project-a-3.1.jar;(...)/project-b-2.1.jar org.mygroup.Main <args>

我知道通常的方法是构建一个包含依赖项的可执行(胖)jar,但这不是我所要求的。

实际上,甚至不需要从 jar 中读取 pom,因为 maven 可以从给定坐标的存储库中下载它。

为什么这个问题与 Maven Run Project 不同问题:

我不想从已经 checkout 项目源开始。 因此,通常使用的 exec 插件不适用。 Maven Run Project 问题的 OP 显然假设存在源代码项目文件夹。她的目的是测试,并且她接受了显然需要一个项目的答案。这两个问题的措辞也是正确的。 “project”和“jar”这两个词是有区别的,它们在各自上下文中的实际含义也有很大不同。

最佳答案

您可以使用appassembler-maven-plugin插件,它会为您创建一个在类路径中具有依赖项的 shell 脚本。这是一个示例配置

        <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
<configuration>
<extraJvmArguments>-Xms256m -Xmx1536m</extraJvmArguments>
<programs>
<program>
<mainClass>com.package.MyMainClass</mainClass>
<name>TestFormattingUtils</name>
</program>
</programs>
</configuration>
</plugin>

您可以在 .../target/appassembler/bin 中找到输出脚本您可以手动检查脚本,您将看到它执行您想要的命令类型,通过命令行将 jar 添加到类路径。即java -jar (...)/project-a-3.1.jar -cp (...)/project-b-2.1.jar <args>

关于java - 是否有运行非 fat jar 的 Maven 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993945/

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