gpt4 book ai didi

java - mvn 执行 :java to run a java file in an external JAR file

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:08 26 4
gpt4 key购买 nike

在 pom.xml 中,使用 maven-dependency-plugin 将特定的外部 JAR 文件下载到单独的位置(在/tmp/externalTestJars/testjar.jar 中)。

我想使用 exec-maven-plugin 来运行 testjar.jar 文件 (Main.java) 中的 java 类。

我找到了 this SO question问有点相同的问题,但该问题的答案对我没有帮助。

如果我直接运行 Main.java 文件(在创建 .jar 的原始项目中,使用 mvn exec:java)我可以使用下面的 pom 配置。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<mainClass>org.example.Main</mainClass>
<!-- need to pass two arguments to the Main.java file main method -->
<arguments>
<argument>arg one</argument>
<argument>arg two</argument>
</arguments>
</configuration>
</plugin>

在上面的 SO 问题中,它有如下答案,可以在 .jar 文件中运行 java 文件。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<mainClass>org.example.Main</mainClass>
<arguments>
<argument>-jar</argument>
<argument>/tmp/externalTestJars/testjar.jar</argument>
</arguments>
</configuration>
</plugin>

但在我的例子中,这些参数将被视为要传递给 Main.java 中的主要方法的参数,因为它需要两个参数。所以这种方法对我不起作用。

这可以使用 exec maven 插件来完成,还是有任何其他方法可以做到这一点。

最佳答案

如果你想运行类似于 java -cp/tmp/externalTestJars/testjar.jar org.example.Main 的类,插件应该配置如下。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-cp</argument>
<argument>/tmp/externalTestJars/testjar.jar</argument>
<argument>org.example.Main</argument>
</arguments>
</configuration>
</plugin>

如果你想运行类似于 java -jar/tmp/externalTestJars/testjar.jar 的类(假设 org.example.Main 被定义为 Main-Class in the MANIFEST.MF) 插件应该配置如下。

<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>/tmp/externalTestJars/testjar.jar</argument>
</arguments>
</configuration>

在这两种情况下都使用 mvn exec:exec 运行它

编辑:一个使用mvn exec:java的例子。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>org.example.Main</mainClass>
<additionalClasspathElements>
<additionalClasspathElement>
/tmp/externalTestJars/testjar.jar
</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>

注意:如果项目和 jar 文件 testjar.jar 都包含类 org.example.Main 那么类来自项目将被执行。由于 additionalClasspathElement 定义的类路径元素将附加到项目类路径。

关于java - mvn 执行 :java to run a java file in an external JAR file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42337857/

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