如何在 Eclipse 中使用自己的 MANIFEST.MF 构建 jar

Sve*_*ven 5 java eclipse jar manifest.mf

MANIFEST.MF我在 Eclipse 的 java 项目中有一个自定义。

将项目导出到jar时,我选择

使用工作区中的现有清单

提取 .jar 显示 eclipse 生成了自己的清单。

我的清单:

Manifest-Version: 1.0 
Main-Class: de.somehow.tagPDF.Main
Class-Path: lib/iText-5.0.2.jar;lib/jxl.jar;lib/jai_codec.jar;lib/jai_core.jar
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Koe*_*box 4

您可以使用 build.xml 来构建 jar 文件。

然后您只需将 build.xml 作为 Ant 任务运行即可。

替代文本

如果您希望 build.xml 在每次构建 Eclipse 项目时自动运行,则可以将其添加到 Builders 列表中。

替代文本

以下是使用自定义清单的示例 build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." name="Example" default="run_build">

    <property name="guiJar" value="../../Library/<jar-name>.jar"></property>

    <target name="run_build" depends="delete_old_jar,create_dirs,create_manifest,copy_all_class_files,create_jar,delete_temp_dirs">
    </target>

    <target name="delete_old_jar">
        <delete file="${guiJar}">
        </delete>
    </target>

    <target name="create_dirs">
        <mkdir dir="jar_temp" />
        <mkdir dir="jar_temp/META-INF" />
    </target>

    <target name="delete_temp_dirs">
        <delete dir="jar_temp">
        </delete>
    </target>

    <target name="create_manifest">
        <manifest file="jar_temp/META-INF/MANIFEST.MF">
            <attribute name="Manifest-Version" value="1.0" />
            <attribute name="Version" value="1.0.0" />
            <attribute name="Company" value="Value" />
            <attribute name="Project" value="Value" />
            <attribute name="Java-Version" value="${java.version}" />
            <attribute name="Class-Path" value="test.jar" />
                    <attribute name="Main-Class" value="com.Main" />
        </manifest>
    </target>

    <target name="create_jar">
        <jar destfile="${guiJar}" manifest="jar_temp/META-INF/MANIFEST.MF" basedir="jar_temp">
        </jar>
    </target>

    <target name="copy_all_class_files">
        <copy todir="jar_temp">
            <fileset dir="classes">
                <include name="*/**" />
            </fileset>
        </copy>
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)