我有一个Java项目,选择了标准的Java builder作为它的惟一构建器。此外,构建被配置为自动构建。
我想了解的是,当我将ant构建添加到此项目(project -> properties -> builders
)时,会产生什么样的构建环境。我所期望的是,每次我对Java源代码进行更改时,Java Builder和ant构建都会运行,但我的ant构建似乎并没有运行。
当我第一次添加ant构建时,它会运行,也就是说,我在控制台中看到了输出。但是,当我对源文件进行更改时,它不会再次运行,也就是说,我在控制台中看不到输出。我知道Java Builder仍在运行,因为我的更改已经进入Eclipse代码意识,即我可以从其他类引用这些更改,等等。
请注意,如果我手动调用构建,即通过Project -> Build All
,ant构建将运行,即我在控制台中再次看到输出。
那么,为什么我添加的ant build不使用自动构建呢?注意,我不一定期望它能够做增量工作,因为它不是为此而设计的,但我认为它会在Java Builder启动时启动?我是不是遗漏了什么?
发布于 2012-10-27 09:48:35
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构建器的实现使得它只对完整构建做出反应,而不是增量构建。
发布于 2012-10-27 12:12:21
您是否将Ant构建器配置为在“自动”构建期间运行?为此,选择构建器的属性,转到Targets
页面并为Auto Build
使用Set Targets
。
我有一个Ant构建器,它在我的Eclipse项目中运行于所有类型的构建中(保存编辑过的源文件时也是如此),我不记得还做了其他什么更改。
https://stackoverflow.com/questions/7434400
复制