如何禁止maven汇编插件跳过已添加的文件?或者允许覆盖?

时间:2010-04-07 23:47:12

标签: maven-2 maven maven-assembly-plugin

几周以来,我一直在和maven搏斗,让它“正确地”部署我们的项目。

我差不多完成但是我有一个顽固的小问题:

当我使用带有“目录”目标的maven程序集插件时,如

mvn assembly:directory

我得到了很多控制台输出,如下所示:

[INFO] tomcat/conf already added, skipping
 [INFO] tomcat/conf/Catalina already added, skipping
 [INFO] tomcat/conf/Catalina/localhost already added, skipping
 [INFO] tomcat/webapps already added, skipping

我编写了自己的汇编描述符,它基本上将多个FileSets复制到deploy目录中的各个子目录中。只要将一个FileSet中的文件复制到另一个FileSet已经创建了基本目录结构的位置(以及一些可以覆盖的“默认”文件),就会出现上述消息。

所以,我很难搞清楚:

我如何1)抑制这些消息(但只有“已经添加”消息)或2)允许覆盖?

6 个答案:

答案 0 :(得分:12)

信息消息来自Plexus Archiver。有关此问题的公开错误报告:

http://jira.codehaus.org/browse/PLXCOMP-129

答案 1 :(得分:9)

vocaro提到的Plexus bug已得到修复。使用版本为2.4的maven-assembly-plugin(编写时最高版本)不会打印详细消息。

答案 2 :(得分:3)

  1. 升级到Maven 3.1.x或更高版本 - 请参阅http://maven.apache.org/maven-logging.html

    Maven 3.1.0以后的标准Maven发行版使用SLF4J API进行日志记录并结合SLF4J Simple实现。

  2. 现在使用simplelogger,我们可以对日志消息进行细粒度控制。要识别导致不需要的消息的记录器,请编辑MAVEN_HOME / conf / logging / simplelogger.properties并更改以下内容:

    org.slf4j.simpleLogger.showLogName =真

  3. 观察构建输出中不需要的垃圾:

    [INFO] org.codehaus.plexus.archiver.jar.JarArchiver - META-INF/MANIFEST.MF already added, skipping
    
  4. 返回simplelogger.properties,按类名减少违规记录器的日志记录级别(同时将showLogName设置为false)

    org.slf4j.simpleLogger.log.org.codehaus.plexus.archiver.jar.JarArchiver =警告

答案 3 :(得分:2)

最好使用maven-resources-plugin和copy-resources目标将所需的目录集中到一个地方。为基本目录结构创建执行,并为自定义部件添加后续执行。将目标的overwrite属性设置为true将确保自定义文件将覆盖默认值。

然后在你的程序集描述符中使用你刚刚创建的文件集。

答案 4 :(得分:1)

如果我理解你的问题是正确的,你应该使用maven-dependency plugin复制文件/覆盖而不是使用汇编插件......

答案 5 :(得分:1)

maven 3.0.4:

在制作单个jar或组合来源时,我仍会收到这些消息。 http://jira.codehaus.org/browse/PLXCOMP-129 似乎不是在maven。

我的解决方法是使用各种排除模式,尤其是文件夹的%regex [..]。我不知道这是多么稳定或一般,显然需要保持。但是,我们遇到的情况是,当我们需要做一些真实的消息时,我们无法看到这么多消息。

跳过通知,许可证 - 我在程序集中稍后放入了正确的合并文本版本。无论如何,来自依赖关系的部分内容都不够好。

匹配文件夹名称会排除所有内容,而不是文件夹本身。文件夹确实出现在输出中,没有INFO级别“跳过”消息。

<unpackOptions>
  <excludes>
    <exclude>**/NOTICE*</exclude>
    <exclude>**/LICENSE*</exclude>
    <exclude>**/DEPENDENCIES*</exclude>
    <exclude>META-INF/**</exclude>
    <!-- Exclude folders - this removes "skipping" messages -->
    <exclude>%regex[.*/]</exclude>
  </excludes>
</unpackOptions>