一个愚蠢的问题,但我无法在任何地方找到答案.
目前正在学习Apache Ant,我开始创建一个非常基本的构建文件和java项目,它将一行字符串输出到控制台.这是我使用命令时输出的内容
ant compile jar run
PS C:\Users\zayd\Desktop\Apps\pbox> ant compile jar run
Buildfile: C:\Users\zayd\Desktop\Apps\pbox\build.xml
compile:
[mkdir] Created dir: C:\Users\zayd\Desktop\Apps\pbox\build\classes
[javac] C:\Users\zayd\Desktop\Apps\pbox\build.xml:9: warning: 'includeantruntime' was not set, defaulting to build.s
ysclasspath=last; set to false for repeatable builds
[javac] Compiling 8 source files to C:\Users\zayd\Desktop\Apps\pbox\build\classes
jar:
[mkdir] Created dir: C:\Users\zayd\Desktop\Apps\pbox\build\jar
[jar] Building jar: C:\Users\zayd\Desktop\Apps\pbox\build\jar\Main.jar
run:
[java] ~We'll go down in history~
BUILD SUCCESSFUL
Total time: 1 second
Run Code Online (Sandbox Code Playgroud)
有没有办法删除与程序输出一起打印的'[java]'标签?
默认情况下,不可以。输出中的任务前缀由 Ant 的日志记录机制控制,而不是由java任务本身控制,因此无法更改java任务用法来删除此输出。
唯一的方法是编写您自己的BuildLogger来自定义构建事件消息,然后指示 Ant 使用此自定义记录器而不是DefaultLoggerAnt 默认使用的记录器。请参阅https://ant.apache.org/manual/listeners.html(该链接包含编写您自己的侦听器和记录器的指针)。
如果您确实打算这样做,而不仅仅是出于好奇而提出这个问题,那么这里有一个片段,其中DefaultLogger指出了如何使用任务名称记录构建事件消息:
/**
* Logs a message, if the priority is suitable.
* In non-emacs mode, task level messages are prefixed by the
* task name which is right-justified.
*
* @param event A BuildEvent containing message information.
* Must not be <code>null</code>.
*/
public void messageLogged(BuildEvent event) {
int priority = event.getPriority();
// Filter out messages based on priority
if (priority <= msgOutputLevel) {
StringBuffer message = new StringBuffer();
if (event.getTask() != null && !emacsMode) {
// Print out the name of the task if we're in one
String name = event.getTask().getTaskName();
String label = "[" + name + "] ";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |