buildFinished和buildStarted不起作用

时间:2016-01-11 14:06:29

标签: java apache ant

我从dfm <- melt(my.dat, id.vars = c("group1", "group2","group3")) lapply(list(.(group1, variable), .(group2, variable),.(group3, variable)), ddply, .data = dfm, .fun = summarize, mean = mean(value), sd = sd(value), N=length(value), se=sd/sqrt(N)) DefaultLogger创建了一个子类:

org.apache.tools.ant.DefaultLogger

我参加了信息here

所以我从public class ExtendedLogger extends DefaultLogger { // My stuff } 重载了一些方法:

DefaultLogger

效果很好(我可以看到输出)。

这些方法也有效:

@Override
public void targetStarted(BuildEvent event){
    System.out.println("Logger : "+"[TARGET STARTED]\n");
}

@Override
public void targetFinished(BuildEvent event){
    System.out.println("Logger : "+"[TARGET FINISHED]\n");
}

但我有麻烦

public void taskStarted(BuildEvent event);
public void taskFinished(BuildEvent event);

不可能采用这些方法!

我哪里错了?

感谢。

编辑12/01/2016:

我刚尝试了一个像@Vaspar这样简单的testBuild.xml:

@Override
public void buildFinished(BuildEvent event) {
    System.out.println("Logger : "+"[BUILD FINISHED]\n");
}

@Override
public void buildStarted(BuildEvent event) {
    System.out.println("Logger : "+"[BUILD STARTED]\n");
}

输出是:

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="Init" basedir=".">



<target name="Init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <echo message="INIT-ING"/>
</target>


<!-- targets used in my project -->
<target name="Clean" description="Clean output directory.">
    <echo>Clean</echo>
</target>

<target name="CleanAutogenerated" description="Clean auto-generated folder.">
    <echo>CleanAutogenerated</echo>
</target>

<target name="AutoGenerateTopics" description="Manual specific targets.">
    <echo>AutoGenerateTopics</echo>
</target>

<target name="BuildDocument" description="Build full documentation">
    <echo>BuildDocument</echo>
</target>



</project>

请注意,Logger : [TARGET STARTED] org.apache.tools.ant.BuildEvent[source=Clean] Logger : [TASK STARTED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@12f33e1] [echo] Clean Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@12f33e1] Logger : [TARGET FINISHED] org.apache.tools.ant.BuildEvent[source=Clean] CleanDocumentTask DONE Logger : [TARGET STARTED] org.apache.tools.ant.BuildEvent[source=CleanAutogenerated] Logger : [TASK STARTED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@1e2862f] [echo] CleanAutogenerated Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@1e2862f] Logger : [TARGET FINISHED] org.apache.tools.ant.BuildEvent[source=CleanAutogenerated] CleanAutoGenerateTask DONE Logger : [TARGET STARTED] org.apache.tools.ant.BuildEvent[source=AutoGenerateTopics] Logger : [TASK STARTED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@19bf1ed] [echo] AutoGenerateTopics Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@19bf1ed] Logger : [TARGET FINISHED] org.apache.tools.ant.BuildEvent[source=AutoGenerateTopics] AutoGenerateTask DONE Logger : [TARGET STARTED] org.apache.tools.ant.BuildEvent[source=BuildDocument] Logger : [TASK STARTED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@10b85cb] [echo] BuildDocument Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@10b85cb] Logger : [TARGET FINISHED] org.apache.tools.ant.BuildEvent[source=BuildDocument] DocumentTask DONE CleanDocumentTask DONE等等是我项目中的纯Java输出(不是ant)。

如您所见,DocumentTask DONEtargetStarted仍然没有输出:/

编辑12/01/2016(2):

我的 ExtendedLogger.java 的内容:

targetFinished

1 个答案:

答案 0 :(得分:0)

令人惊讶的。我使用了您的代码示例,并且我也能够获取buildStarted / buildFinished日志。

CustomLogger

import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.DefaultLogger;

public class CustomLogger extends DefaultLogger{
    @Override
    public void targetStarted(BuildEvent event){
        System.out.println("Logger : "+"[TARGET STARTED] " + event);
    }

    @Override
    public void targetFinished(BuildEvent event){
        System.out.println("Logger : "+"[TARGET FINISHED] " + event);
    }

    @Override
    public void taskStarted(BuildEvent event) {
        System.out.println("Logger : "+"[TASK FINISHED] " + event);
    }
    @Override
    public void taskFinished(BuildEvent event) {
        System.out.println("Logger : "+"[TASK FINISHED] " + event);
    }

    @Override
    public void buildFinished(BuildEvent event) {
        System.out.println("Logger : "+"[BUILD FINISHED] " + event);
    }

    @Override
    public void buildStarted(BuildEvent event) {
        System.out.println("Logger : "+"[BUILD STARTED] " + event);
    }
}

的build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="init" basedir=".">

  <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <echo message="INIT-ING"/>
  </target>
</project>

以下是输出。

输出

/DummyTest> ant -logger CustomLogger
Buildfile: /DummyTest/build.xml
Logger : [BUILD STARTED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.Project@1318bd3c]
Logger : [TARGET STARTED] org.apache.tools.ant.BuildEvent[source=init]
   [tstamp] Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@31623389]
Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@31623389]
     [echo] Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@636c7a8f]
     [echo] INIT-ING
Logger : [TASK FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.UnknownElement@636c7a8f]
Logger : [TARGET FINISHED] org.apache.tools.ant.BuildEvent[source=init]
Logger : [BUILD FINISHED] org.apache.tools.ant.BuildEvent[source=org.apache.tools.ant.Project@1318bd3c]