12

コンソールアプリケーションを作成しています。jar構成ファイルをフォルダー内のファイルの外側にconf置き、このフォルダーをアプリケーションのクラスパスとして登録したいと考えています。

commandを実行mvn assembly:singleして jar ファイルを取得しますが、この JAR を で実行しようとするとjava -jar MyApplication.jar、構成ファイルを読み取ることができません。

私は私の中にこのスニペットを持っていますpom.xml

<build>
    <finalName>MyApplication</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.7</version>  
            <configuration>
                <projectNameTemplate>
                    [artifactId]-[version]
                </projectNameTemplate>
                <wtpmanifest>true</wtpmanifest>
                <wtpapplicationxml>true</wtpapplicationxml>
                <wtpversion>2.0</wtpversion>
                <manifest>
                    ${basedir}/src/main/resources/META-INF/MANIFEST.MF
                </manifest>
            </configuration>

        </plugin>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <appendAssemblyId>false</appendAssemblyId>
                <archive>
                    <manifest>
                        <mainClass>com.my.test.App</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>.conf/</Class-Path>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
4

2 に答える 2

11

それは私の間違いでした、私は入れなければなりませんでした

<Class-Path>./conf/</Class-Path>

そしてそうではない

<Class-Path>.conf/</Class-Path>
于 2013-03-29T06:27:17.007 に答える
2

私は通常、アセンブリ プラグインを使用して MANIFEST でクラスパス エントリを生成するのではなく、この構成の maven-jar-plugin を使用します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <configuration>
      <archive>
        <index>true</index>
        <manifest>
          <addClasspath>true</addClasspath>
          <addExtensions>false</addExtensions>
          <mainClass>com.my.test.App</mainClass>
        </manifest>
      </archive>
    </configuration>
  </plugin>

アセンブリ プラグインのみを使用して、依存関係 (推移的なものを含む) をビルド ディレクトリにコピーし、配布アーカイブを作成します。依存関係プラグインを使用してこれを行うこともできます。依存関係を配布ツリーのサブディレクトリにコピーする場合は、maven-jar-plugin 構成で classpathPrefix を使用して、アセンブリ記述子の依存関係の宛先と一致させます。

由来

于 2013-03-28T15:16:12.353 に答える