2013-02-26 31 views
2

我想用內行dependency:build-classpath創建一個類路徑:如何在不抑制正常輸出的情況下抑制Mavens INFO垃圾郵件?

 
$ mvn dependency:build-classpath -Dmdep.prefix='lib' -f xpath.pom 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building xpath 1 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:build-classpath (default-cli) @ xpath --- 
[INFO] Dependencies classpath: 
lib/serializer-2.7.1.jar:lib/xalan-2.7.1.jar:lib/xml-apis-1.3.04.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.251s 
[INFO] Finished at: Tue Feb 26 16:37:01 CET 2013 
[INFO] Final Memory: 5M/109M 
[INFO] ------------------------------------------------------------------------ 

我怎麼能阻止內行信息垃圾郵件,同時抑制build-classpath預期的輸出?

我找到了答案,這說明我必須使用-q選項來禁止INFO輸出。但是使用這個選項根本沒有輸出。

我知道我可以使用grep,但我想避免它。我無法相信Maven無法做到這一點,因爲它使得依賴插件非常無用。

這是完整的POM:

 
<?xml version="1.0"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>nobody</groupId> 
    <artifactId>xpath</artifactId> 
    <version>1</version> 

    <dependencies> 
    <dependency> 
     <groupId>xalan</groupId> 
     <artifactId>xalan</artifactId> 
     <version>2.7.1</version> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.basedir}/lib</outputDirectory> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

回答

3

我知道這是不理想的部分,但您可以使用outputFile有它把輸出到文件中。

+1

似乎是唯一的出路。 – ceving 2013-02-27 10:46:39

0

INFO是信息的非常小的量,你真的必須看到關於構建。這是它使用的默認日誌記錄級別。如果你告訴它不要使用INFO,那麼Maven中的所有日誌消息和你使用的插件都不會輸出任何內容。

+3

Mavens故障是,記錄和輸出之間沒有分離。對於像build-classpath這樣的函數來說,輸出一些東西是必須的。大約40年前,有人發明了stdout。烏鴉的愚蠢就是忘記它。順便說一下:我無法想象爲什麼我最終需要看到這一行的任何理由'[INFO] ---------------------------六次。 – ceving 2013-02-27 10:45:37

+0

問題是日誌記錄應該有更多的級別。但是,即使這樣做,大多數開發人員也不習慣使用細粒度日誌記錄。最後,如果你問我,你最終會得到所有打印出來的信息,而且大部分信息都在信息和調試之間。 – carlspring 2013-02-27 11:16:11

+2

輸出內容不是記錄某些內容的真正子集。這些操作彼此不同。 – ceving 2013-02-27 12:12:32

0

在Linux下,你可以添加的grep -v信息到你的語句結束

$ mvn help:evaluate -Dexpression=project.parent.version |grep -v INFO 4.0.6-a $

+3

是的,但Maven的想法是獨立於平臺。如果我想在'grep'上傳遞,我也可以寫一個Makefile。 – ceving 2015-01-16 08:15:51