1

pom.xml を介して manifest.mf に追加のデータを書き込もうとしていますが、何らかの理由で空白のままです....私は Java の完全な初心者なので、すべての手順をここに書きます..いいえ私が何をしているのかわからないので、これがどれほど愚かに見えても、どんなポインタでも素晴らしいでしょう...

これは私の pom.xml のビルド部分です

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <archive>
                <manifestFile>
                    ${basedir}/src/main/resources/META-INF/MANIFEST.MF
                </manifestFile>
                <manifest>
                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                </manifest>
                <manifestEntries>
                    <Test>I am a test</Test>
                </manifestEntries>
            </archive>
        </configuration>
    </plugin>
  </plugins>
</build>

src/main/resources/META-INF ファイル内に MANIFEST.MF ファイルを手動で作成し、ビルド中に書き込まれることを期待して空白のままにしました。

mvn clean package を実行します

target/resources/classes/META-INF ディレクトリに移動し、空白の MANIFEST.MF を開きます。私がターゲットに行くとき/そしてするとき

java -jar myTest.jar

結果は

myTest.jar にメインのマニフェスト属性がありません

誰か私が間違っていることを(非常に優しく)教えてください。

:D

前もって感謝します

4

1 に答える 1

1

maven pom.xml セクションは私には良さそうです。winzip または winrar を使用して myTest.jar を開き、ターゲット フォルダーの下にある jar ファイル内の MANIFEST.MF ファイルを確認することができます。MANIFEST.MF ファイルは、プロジェクトの実装バージョンなどのエントリと既にマージされている可能性が非常に高いです。target/resources/classes/META-INF/MANIFEST.MF が空白の理由は、まだマージが行われていないためです。その時点で Maven は、提供された MANIFEST.MF ファイルをターゲット フォルダーにコピーするだけでした。java -jar myTest.jar を実行すると、「メイン マニフェスト属性がありません」という結果が得られました。これは、セクション<mainClass/>内で指定しなかったためです。<manifest>これを行うと、MANIFEST.MF ファイルにMain-Classエントリが追加されます。これは、実行時に実行されるメイン クラスになります。java -jar myTest.jar

于 2013-02-26T04:06:09.507 に答える