几周以来,我一直在和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)允许覆盖?
答案 0 :(得分:12)
信息消息来自Plexus Archiver。有关此问题的公开错误报告:
答案 1 :(得分:9)
vocaro提到的Plexus bug已得到修复。使用版本为2.4的maven-assembly-plugin(编写时最高版本)不会打印详细消息。
答案 2 :(得分:3)
升级到Maven 3.1.x或更高版本 - 请参阅http://maven.apache.org/maven-logging.html
Maven 3.1.0以后的标准Maven发行版使用SLF4J API进行日志记录并结合SLF4J Simple实现。
现在使用simplelogger,我们可以对日志消息进行细粒度控制。要识别导致不需要的消息的记录器,请编辑MAVEN_HOME / conf / logging / simplelogger.properties并更改以下内容:
org.slf4j.simpleLogger.showLogName =真
观察构建输出中不需要的垃圾:
[INFO] org.codehaus.plexus.archiver.jar.JarArchiver - META-INF/MANIFEST.MF already added, skipping
返回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>