mvn exec:java 到 运行 外部 JAR 文件中的 java 文件
mvn exec:java to run a java file in an external JAR file
在 pom.xml 中有一个用法 maven-dependency-plugin
将特定的外部 JAR 文件下载到单独的位置(在 /tmp/externalTestJars/testjar.jar 中)。
我想在testjar.jar文件中使用exec-maven-plugin
到运行一个javaclass (Main.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 插件来完成,还是有任何其他方法可以做到这一点。
如果你想运行 class 类似于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>
如果你想运行的class类似于java -jar /tmp/externalTestJars/testjar.jar
(假设org.example.Main
在MANIFEST.MF
中定义为Main-Class
)插件应该配置如下。
<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
都包含 class org.example.Main
那么 class 来自该项目将被执行。由于 additionalClasspathElement
定义的 classpath 元素将附加到项目 classpath.
在 pom.xml 中有一个用法 maven-dependency-plugin
将特定的外部 JAR 文件下载到单独的位置(在 /tmp/externalTestJars/testjar.jar 中)。
我想在testjar.jar文件中使用exec-maven-plugin
到运行一个javaclass (Main.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 插件来完成,还是有任何其他方法可以做到这一点。
如果你想运行 class 类似于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>
如果你想运行的class类似于java -jar /tmp/externalTestJars/testjar.jar
(假设org.example.Main
在MANIFEST.MF
中定义为Main-Class
)插件应该配置如下。
<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
都包含 class org.example.Main
那么 class 来自该项目将被执行。由于 additionalClasspathElement
定义的 classpath 元素将附加到项目 classpath.