24

几个星期以来,我一直在与 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

我编写了自己的程序集描述符,基本上将几个 FileSet 复制到部署目录中的各个子目录中。每当将来自一个 FileSet 的文件复制到另一个 FileSet 已经创建基本目录结构(以及一些可以覆盖的“默认”文件)的位置时,就会出现上述消息。

所以,我很难弄清楚:

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

4

6 回答 6

12

信息消息来自 Plexus Archiver。关于这个问题有一个开放的错误报告:

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

于 2010-12-27T06:45:52.147 回答
10

vocaro 提到的 Plexus 错误已得到修复。将 maven-assembly-plugin 与 2.4 版(撰写本文时最高)一起使用不会打印详细消息。

于 2013-12-05T17:12:46.300 回答
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=true

  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=warn

于 2014-01-22T18:15:59.377 回答
2

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

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

于 2012-01-23T09:54:20.630 回答
1

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

于 2010-04-09T10:38:50.913 回答
1

行家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>
于 2012-08-26T17:55:50.580 回答