从Eclipse项目创建多个JAR文件

4
我开始着手处理一个项目,目前从 Eclipse 项目生成一个单块的 JAR 文件。基本上,有一个 Ant 脚本在 Eclipse Java Builder 运行时运行,将 Eclipse Java Builder 的输出(.class 文件)打包成一个 JAR 文件。这个 JAR 文件然后被放置在一个公共目录中,以便其他工具可以获取最新版本的构建。
现在团队使用这种方式很好,所以我不想对它做太多改变,但是,在那个 JAR 文件中有许多不必要的文件,使得它比必要的要大得多。我想知道是否可能在与上述相同的框架(Eclipse + Ant)中将大型 JAR 文件拆分为更小、更易管理的 JAR 文件。例如:
com.company.project.thing1 com.company.project.thing2 com.company.project.thing3
这三个组件都被打包进了 JAR 文件中。而我只想把 thing1 和 thing2 放在一个 JAR 文件中,而 thing3 则放在第二个 JAR 文件中。
我确实意识到我可以有单独的项目,但我想看看是否还有可能将项目仍然保持在一起,因为这是有意义的。任何帮助都将不胜感激。
谢谢。
根据要求,以下是 Ant Build Script(我只包含了 jar 任务 - 另外一个只是清除):
<target name="jar" description="Deploys the JAR file." depends="clean">
    <mkdir dir="${dir.dist}">

    <!-- Build the JAR file containing the classes. -->
    <jar destfile="${dir.dist}/${build.name}.jar">

        <!-- Generate the MANIFEST.MF file. -->
       <manifest>
           <attribute name="Built-By" value="${user.name}" />
           <attribute name="Release-Version" value=${version}" />
       </manifest>

       <zipfileset dir="${dir.build}" />
   </jar>
</target>
2个回答

4

如果您使用zipfilesetincludes功能(以及一些macrodef魔法),则可能会得到以下类似结果:

<macrodef name="packaging">
    <attribute name="package"/>
    <sequential>
        <jar destfile="${dir.dist}/${build.name}-@{package}.jar">
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Release-Version" value=${version}"/>
            </manifest>

            <zipfileset dir="${dir.build}" includes="com/acme/@{package}/**/>
        </jar>
    </sequential>
</macrodef>

<packaging package="package1"/>
<packaging package="package2"/>
<packaging package="package3"/>

1
太好了,谢谢!我不知道macrodef - 谢谢你向我展示它(+1)。 - JasCav

0
你可以复制你的build.xml文件内容吗(这是Ant使用的文件)?
你需要做的事情很简单,但请给我们展示build文件以便我们帮助你。
或者你自己阅读Ant jar task

我已经添加了它。我确实理解JAR任务,但我不确定如何在知道如何提取Eclipse构建的特定部分的情况下使用它。这就是让我感到困难的地方。 - JasCav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接