在Eclipse中自动将项目构建到JAR中


171

我有一个Eclipse项目,我想将我的Java项目自动保留在JAR中。我知道我可以选择将项目导出到JAR。如果我单击右键;但是我真正要寻找的是,就像Eclipse一样,它会自动构建项目的.class文件并将其放置在目标文件夹中;它还应自动构建JAR,并在某些或特定位置复制最新的JAR。

是否可以通过这种方式配置Eclipse以自动构建JAR?

只是为了向大家说清楚,耐心地回答我的问题;我并不是将ANT视为解决方案;就像我已经使用过的一样,但是我希望它可以通过基于时间的触发器或带有更改的立即构建自动启动。


1
我的个人看法:使用Eclipse的maven集成m2e,因此它会在构建过程中为您输出一个jar。我最近尝试在没有Maven的情况下使用Eclipse,并且不敢相信基本Java构建器的原始性。
克雷格·林格2014年

1
对于2018年,请使用构建工具而非IDE特定功能。Maven向您提供IDE独立性和命令行支持。
托尔比约恩Ravn的安德森

@Craig Ringer-是否存在有关该操作的链接?
nsandersen,

Answers:


27

退房 Apache Ant

可以使用Ant在eclipse上进行自动构建,方法如下


我已经在使用Apache ant进行构建并制作Jar。但是我真正想要的是围绕apache ant的一种方法,并且直接使用eclipse。
Priyank

抱歉,我之前没有浏览链接中的文章。它确实在谈论我需要什么。谢谢。
Priyank

1
康拉德(Konrad)的答案与OP所寻找的内容更加接近。
lycono 2011年

lycono,我不同意-OP希望jar保持最新状态,并且导出jar文件不会尝试解决该问题。
James Moore

1
在2011年7月,@ Peter引用的文章完全没有讨论如何构建jar文件。
詹姆斯·摩尔

288

您要一个.jardesc文件。它们不会自动开始,但是只需单击两次即可。

  1. 右键点击您的项目
  2. 选择 Export > Java > JAR file
  3. 选择包含的文件并命名输出JAR,然后单击 Next
  4. 选中“在工作空间中保存此JAR的描述”,然后为新.jardesc文件选择一个名称

现在,您要做的就是右键单击.jardesc文件并选择Create JAR,它将导出到同一位置。


遗憾的是,几个月前这个答案没有得到更多的赞誉(或最佳答案)。哦,好的,现在Konrad不见了。
Dan Rosenstark 2010年

25
在Eclipse Galileo中,我必须用文件->导出-> Java-> JAR文件替换您的第1步。
马特·哈金斯

9
有没有一种方法可以自动执行“右键单击->创建JAR”步骤?
Asaf

4
有没有一种方法可以自动执行“右键单击->创建JAR”步骤或将其绑定到组合键?
Pacerier

5
我使用“导出...-> Java->可运行的JAR文件”来创建该文件。
TedTrippin

70

创建一个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图标。 Eclipse Project中的Build.xml

步骤2 右键单击项目中的根节点。-选择属性-选择构建器-选择新建-选择蚂蚁构建-在“主要”选项卡中,完成bin文件夹中build.xml文件的路径。

Ant构建器配置 构建步骤-“目标”标签

检查输出

构建后,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

编辑:@yeoman和@betlista的一些有用的评论

@yeoman我认为正确的包含应该是/.class,而不是* .class,因为大多数人使用包,因此对类文件进行递归搜索比平面包含更有意义

@betlista我建议不要在src文件夹中包含build.xml


2
是的,您可以按以下步骤选择构建步骤的目标:清理后,手动构建,自动构建和清理期间。自动构建应该给您您想要的东西:)
Thomas Bratt 2012年

8
在尝试了两者之后,此解决方案似乎比Konrad的解决方案好得多。它要求您手动找出构建文件中的某些路径,但是它允许自动构建(而不是2次单击)并允许轻松自定义(例如,在构建后复制jar)。以下是在根目录中具有构建文件并具有多个嵌套级别的软件包时构建jar文件的方法:<jar jarfile="dist/mypackage.jar" basedir="bin/" includes="**/*.class" />
worldsayshi 2012年

3
+1这怎么不是一个被接受的答案,甚至不是投票最多的答案?
Juan Garcia

2
非常感谢你。我建议不要build.xml在src文件夹中,但其余都工作正常,太神奇了!
Betlista '16

1
我认为正确的包含应该是/ .class,而不是* .class,因为大多数人使用包,因此,递归搜索类文件比平面包含更有意义。在此之前将删除我的+1,因为答案通常无法正常使用。
yeoman

13

这可以通过在Eclipse中定义自定义Builder来实现(请参阅Peter答案中的链接)。但是,除非您的项目非常小,否则可能会减慢您的工作空间。类文件的自动构建是逐步进行的,即,仅重新编译受更改影响的那些类,但是每次保存更改时,都必须重新构建和复制JAR文件。



1

使用上面的Thomas Bratt的答案,只需确保正确配置了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="bin/" includes="**/*.class" />
  </target>
</project>

(请注意,双星号 -它会告诉build在所有子目录中查找.class文件。)


0

创建构建器启动器是一个问题,因为2个项目不能具有相同的外部工具构建名称。每个名称必须唯一。我目前正在面对这个问题,以自动执行我的构建并将JAR复制到外部位置。

我正在使用IBM的Zip Builder,但这只是一个帮助,而没有真正做到。

人们可以尝试使用IBM ZIP Creation插件。 http://www.ibm.com/developerworks/websphere/library/techarticles/0112_deboer/deboer2.html#download

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.