在Eclipse和增量中向Project中添加构建器

时间:2011-09-15 16:39:23

标签: eclipse ant build

我有一个Java项目,选择标准Java Builder作为它的唯一构建器。此外,构建配置为自动构建。

我想了解的是当我向此项目添加ant构建时产生的构建环境(project -> properties -> builders)。我所期望的是,每次我对Java源代码进行更改时,Java Builder和我的ant构建都会运行,但似乎我的ant构建运行不正常。

当我第一次添加ant构建时,它会运行,即我在控制台中看到输出。但是,当我然后对源文件进行更改时,它不会再次运行,即我在控制台中看不到输出。我知道Java Builder仍在运行,因为我的更改已经进入了Eclipses代码感知,即我可以从其他类引用这些更改等。

注意,如果我手动调用构建,即通过Project -> Build All,则运行ant构建,即我再次在控制台中看到输出。

那么,为什么我添加的蚂蚁构建不会与自动建筑一起运行?注意,我不一定会期望它能够进行增量工作,因为它不是为此而做的,但我认为它会在Java Builder发布时触发吗?我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

ant构建器或任何其他构建器有几种构建项目的方法。当在Eclipse中进行构建时,将调用所有活动构建器的build(int kind, Map<String, String> args, IProgressMonitor monitor)方法,但是,有任何类型的构建,任何构建器都会在build方法中进行检查。构建的类型是:

FULL_BUILD
AUTO_BUILD
INCREMENTAL_BUILD
CLEAN_BUILD

以下是build的示例语法:

protected IProject[] build(int kind, Map<String, String> args, IProgressMonitor monitor) throws CoreException {
    if (kind == FULL_BUILD) {
        fullBuild(monitor);
    } else {
        IResourceDelta delta = getDelta(getProject());
        if (delta == null) {
            fullBuild(monitor);
        } else {
            incrementalBuild(delta, monitor);
        }
    }
    return null;
}

正如您所看到的,构建器可以决定对某种构建做出反应,甚至对不同的构建类型采取不同的行为,因此,我的猜测是,实现了ant构建器,以便它只对完整构建做出反应,而不是增量构建。

答案 1 :(得分:0)

您是否将Ant构建器配置为在“自动”构建期间运行?为此,请选择构建器的属性,转到Targets页面并使用Set Targets Auto Build

我有一个Ant构建器,它在我的Eclipse项目中运行在所有类型的构建上(因此也保存了已编辑的源文件),我不记得更改其他任何内容。