0

eclipse mars を使用して、Maven プロジェクトから実行可能な .jar を作成しようとしています。プロジェクト自体はhttps://github.com/jsprit/jspritにあります。

これまでのところ、Maven プロジェクトとして jsprit を eclipse に正常にインポートしており、サンプルを Java アプリケーションとして実行できます。

私はまだそれを実行可能なjarとしてエクスポートすることに成功していません。SimpleExample.java をエクスポートしたいとしましょう。.jar を作成しましたが、jsprit-examples-1.6.2-SNAPSHOT-jar-with-dependencies.jar を実行しようとすると、次のエラー メッセージが表示されます。

エラー: メイン クラス jsprit.examples.SimpleExample が見つからないか、読み込めませんでした

jsprit-examples の下にある pom.xml は次のとおりです。

<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">
<parent>
    <groupId>jsprit</groupId>
    <artifactId>jsprit</artifactId>
    <version>1.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>jsprit-examples</artifactId>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-enforcer-plugin</artifactId>
                                    <versionRange>[1.0.0,)</versionRange>
                                    <goals>
                                        <goal>enforce</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore/>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>                
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>jsprit.examples.SimpleExample</mainClass>
                        </manifest>
                    </archive>
                    <descriptors>
                        <descriptor>src/main/resources/assemblies/jar-with-dependencies.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                 </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<repositories>
    <repository>
        <id>jsprit-snapshots</id>
        <url>https://github.com/jsprit/mvn-rep/raw/master/snapshots</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>jsprit-instances</artifactId>
        <version>${project.version}</version>
    </dependency>

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>jsprit-core</artifactId>
        <version>${project.version}</version>
    </dependency>

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>jsprit-analysis</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

それ以外はすべて github リポジトリと同じです。jsprit-examples で「Maven Build...」を実行しました。「Edit Configuration->Goals」の下で、「clean package assembly:single」を実行しました。

これは maven ビルドの初めての経験なので、maven の経験がある人にとっては非常に単純な問題かもしれません。

ありがとう!

4

1 に答える 1

0

すべての依存関係を 1 つの実行可能 jar に入れたい場合は、uber-jar を作成する必要があります。私は通常これをmaven shade pluginで行います。

于 2015-11-26T19:24:46.510 に答える