0

私はmavenが初めてで、mavenパッケージフェーズの説明にとても満足しています。3 つの Java クラスを持つ com-theta-gesture という名前の Maven プロジェクトがあります。クラスの 1 つに main メソッドがあります。mvn package コマンドを実行すると、ターゲット フォルダーが作成されます。以下は、ターゲットフォルダーの構造です

  target/
        |
        classes/
        |
        maven-archive/
        |
        generated-sources/
        |
        testclasses/
        |
        surefire_report/
        |
        com-theta-gesture-1.0-SNAPSHOT.jar

classes フォルダー内には、アプリケーションの 3 つのコンパイル済み Java クラスがあります。私の質問は、このアプリケーションを実行する場合、com-theta-gesture-1.0-SNAPSHOT.jar 実行可能 jar を実行する必要があるのか​​、またはクラス フォルダーでメイン クラスを実行する必要があるのか​​ということです。次のコマンドを試すと

C:\Users\FAISAL\Desktop\disaster\com-bbox-gesture\target>java com-bbox-gesture-1.0-SNAPSHOT.jar

次のエラーが表示されます

Error: Could not find or load main class com-bbox-gesture-1.0-SNAPSHOT.jar

説明が見つかることを願っています。ありがとうございました。

4

3 に答える 3

1

スタンドアロンの JAR ファイルをビルドするだけであれば、アセンブリ プラグインを使用する必要はありません。

代わりに、プロジェクトですでに使用されている maven-jar-plugin を次のように構成するだけです。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      ...
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>fully.qualified.MainClass</mainClass>
          </manifest>
        </archive>
      </configuration>
      ...
    </plugin>
  </plugins>
</build>

addClasspath依存関係のないスタンドアロン JAR の場合は必要ありません。

上記のスニペットは、maven-jar-pluginのドキュメントに移動し、左側のナビゲーションで[実行可能な JAR ファイルの作成] をクリックすると見つかります。

于 2012-11-15T10:50:44.643 に答える
0

「Maven自己実行可能jar」のGoogleが答えを出します

http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

つまり、JARは自動的に実行可能ではありません。メインクラスの情報をMANIFESTファイルに入れる必要があります。引用されたリンクは、Mavenでそのような情報を設定する通常の方法を説明しています。

于 2012-11-15T03:57:01.640 に答える
0

Adrian Shum が説明しているように、jar はデフォルトでは実行可能な jar ではありません。

ただし、実行可能な jar を作成せずに jar を実行するだけの場合は、exec-maven-plugin.

これは、以下を含む小さな pom ファイルですexec-maven-plugin

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.acne</groupId>
    <artifactId>app</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>${project.artifactId}-${project.version}</name>

    <properties>
        <mainClass>com.acne.App</mainClass>
        <argument/>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>${mainClass}</mainClass>
                    <arguments>
                        <argument>${argument}</argument>
                    </arguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

この pom を使用すると、次のことができます。

mvn package exec:java

そして、プログラムはパッケージ化されてから実行されます。

定義済みのプロパティを使用すると、メイン クラスを簡単に変更して引数を追加できます。

mvn exec:java -DmainClass=com.acne.Calculator -Dargument=100
于 2012-11-15T06:14:25.070 に答える