如何在Eclipse Java项目中自动生成.jar文件

时间:2009-07-13 14:12:19

标签: java eclipse eclipse-3.4 jar

我有一个Eclipse Java项目。它包含一个名为“dist”的文件夹。在该文件夹中是.jar文件。

如何在此项目中进行设置以确保在重新编译项目中的某个.java文件时更新此.jar文件?

感谢。

5 个答案:

答案 0 :(得分:35)

创建一个Ant文件并告诉Eclipse构建它。只有两个步骤,每个步骤都很简单,并按照下面的分步说明进行操作。


第1步 创建build.xml文件并添加到包资源管理器:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TestMain" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <jar jarfile="Test.jar" basedir="." includes="*.class" />
  </target>
</project>

Eclipse应该看起来像下面的截图。注意build.xml上的Ant图标。 Build.xml in Eclipse Project

第2步 右键单击项目中的根节点。   - 选择“属性”   - 选择建筑商   - 选择新建   - 选择Ant Build   - 在Main选项卡中,填写 bin 文件夹中build.xml文件的路径。

Ant builder configuration Build step - Targets Tab

检查输出

Eclipse输出窗口(名为Console)应在构建后显示以下内容:

Buildfile: /home/<user>/src/Test/build.xml

CreateJar:
         [jar] Building jar: /home/<user>/src/Test/Test.jar
BUILD SUCCESSFUL
Total time: 152 milliseconds

答案 1 :(得分:17)

您可以定义一个运行jar任务的Ant构建器来jar中的所有类文件 项目(设置为“Refresh project upon completion”。)

alt text

(另见“Customizing Builds for Your Eclipse Projects”)

请参阅IBM文章:How and why to create custom Ant tasks

alt text

答案 2 :(得分:4)

一个常见的模式是对项目中的类文件起作用(项目可以添加到其他项目构建路径并在测试时在运行时使用),因此在开发过程中实际上并不需要jar文件。

添加自动构建步骤的geeneral方法是编写一个ant脚本,在项目中包含该脚本,然后您可以在项目的构建中包含ant脚本的执行。因为蚂蚁有一个相当简单的jar构建任务,如果你确实需要jar文件,这不是太费力。 See表示首发。

答案 3 :(得分:2)

创建J2EE Utility项目(Util)。它允许您创建与J2EE项目(ProjectX)的关联。当您编辑ProjectX的属性以依赖于Util项目时,它会显示Util as Util.jar。在声明了依赖项后,Eclipse将在必须构建Util项目时构建Util.jar。如果您为Util项目激活了自动构建,则每次构建项目时,.jar文件都将保持同步。如果您的目标项目不是J2EE项目,您仍然可以使用此解决方案,但使用虚拟J2EE父项目。

以下是使用ANT任务从Eclipse中构建.zip文件的帮助页面的链接:http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.pde.doc.user/tasks/pde_feature_generating_ant.htm

另一种解决方案是使用Zip插件。我们在5年前使用过它,但是当WSAD将依赖项目的支持作为.jar文件时停止了。

答案 4 :(得分:0)

Thomas的答案有效,但它生成的jar文件并不是您可以用来实际运行应用程序的文件。

我最终得到了:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TDSz Data Mover" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <delete file="DataMover.jar"/>
        <jar jarfile="DataMover.jar" basedir="bin/" includes="**/*.class **/Messages*.*" " update="no">
            <zipfileset dir="D:/Java/mylib" erroronmissingarchive="true">
                <include name="*.jar" />
            </zipfileset>  
            <manifest>
                <attribute name="Main-Class" value="some.package.and.app"/>
            </manifest>             
        </jar>
  </target>
</project>

自从给出这个答案以来,不知道蚂蚁是否有变化,但实际上需要进行一些挖掘才能使其正常工作。教程中的很多解决方案只是部分答案......

主要变化:

  • 添加了jar文件的删除,因为我没有重新生成它 更改构建文件后重新编译ant构建。
  • 添加了清单以正确设置可执行文件。
  • 将一些.jar文件作为libs
  • 引入
  • 拉入Message_ files以获取NLS支持

Netbeans让这更容易 - 只需检查几个方框。

[编辑修复了错误终止jar标签的问题并拉入.jar文件]