maven exec:jar中的java运行类文件

时间:2012-03-29 12:07:54

标签: maven

我将我的代码打包到jar

罐装好了。

jar -tfv target/test-1.0-SNAPSHOT.jar

com/
com/codevalid/
com/codevalid/App.class
log4j.xml
META-INF/maven/com.codevalid/test/pom.xml
META-INF/maven/com.codevalid/test/pom.properties

我可以使用exec:java

将它们作为单个类文件存在时执行它们

如何使用maven exec:java在jar中运行类文件?

4 个答案:

答案 0 :(得分:6)

好的,这就是我最终做的事情。
我使用

构建了jar
mvn assembly:single

并使用

java -jar ./target/App-1.0-SNAPSHOT-jar-with-dependencies.jar com.codevalid.App

我确实看到了我可以使用

的替代方案
mvn exec:java -Dexec.mainClass="com.codevalid.App"

但我不确定如何将 jar的名称作为类路径传递

答案 1 :(得分:3)

您需要将您的jar文件包含为exec插件的依赖项,例如:像这样:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
  <execution>
    <phase>install</phase>
    <goals>
      <goal>java</goal>
    </goals>
    <configuration>
      <mainClass>com.codevalid.App</mainClass>
    </configuration>
  </execution>
</executions>
<dependencies>
  <dependency>
    <groupId>myGroup</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
  </dependency>
</dependencies>

如果将dependency类编译为当前项目的一部分,则可以跳过com.codevalid.App声明。

答案 2 :(得分:2)

您可以使用exec:java目标运行jar文件,方法是添加一些arguments

<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>target/myJar-1.0-SNAPSHOT.jar</argument>
        </arguments>
    </configuration>
</plugin>

如果您有可执行jar并且不想定义入口点,则需要设置executable并使用exec:exec目标:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-jar</argument>
            <argument>target/myJar-1.0-SNAPSHOT.jar</argument>
        </arguments>
    </configuration>
</plugin>

答案 3 :(得分:1)

您必须将 classpathScope includePluginDependencies includeProjectDependencies 参数指定给类路径中的拾取jar文件。

以下是一个例子:

           <configuration>
                <executable>java</executable>
                <mainClass>com.google.jstestdriver.JsTestDriver</mainClass>
                <classpathScope>test</classpathScope>
                <includePluginDependencies>true</includePluginDependencies>
                <includeProjectDependencies>true</includeProjectDependencies>
                <commandlineArgs>--port 9876</commandlineArgs>
            </configuration>