maven exec: файл класса запуска java в jar - PullRequest
7 голосов
/ 29 марта 2012

Мой код упакован в банку

Баночка упакована нормально.

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

Как запустить файл класса в jar, используя maven exec:java?

Ответы [ 4 ]

6 голосов
/ 30 марта 2012

Хорошо, это то, что я наконец-то сделал.
Я собрал банку, используя

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"

Но я не был уверен, как передать имя банки в качестве пути к классу

3 голосов
/ 29 марта 2012

Вам необходимо включить свой 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 голосов
/ 19 октября 2014

Вы можете запустить jar-файл, используя цель exec:java, добавив 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>
1 голос
/ 01 сентября 2012

Вы должны указать classpathScope и includePluginDependencies или includeProjectDependencies для получения файлов JAR на classpath.

Вот пример:

           <configuration>
                <executable>java</executable>
                <mainClass>com.google.jstestdriver.JsTestDriver</mainClass>
                <classpathScope>test</classpathScope>
                <includePluginDependencies>true</includePluginDependencies>
                <includeProjectDependencies>true</includeProjectDependencies>
                <commandlineArgs>--port 9876</commandlineArgs>
            </configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...