Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven构建一些未包含的类_Java_Maven_Compilation_War - Fatal编程技术网

Java Maven构建一些未包含的类

Java Maven构建一些未包含的类,java,maven,compilation,war,Java,Maven,Compilation,War,当在两台不同的机器上使用mvn install或mvn compile war:war构建maven webapp时,产生的war文件有20MB的差异,它们的构建时间相隔1.5分钟(30s vs 2min) 通过使用WinRAR检查war文件,我注意到较小的war不包含WEB-INF\classes\WEB-INF和WEB-INF\classes\resource文件夹 整个代码库是相同的。POM.xml包含maven编译器插件,webapp和单元测试在这两个应用程序上运行良好,不同之处在于较小

当在两台不同的机器上使用
mvn install
mvn compile war:war
构建maven webapp时,产生的war文件有20MB的差异,它们的构建时间相隔1.5分钟(30s vs 2min)

通过使用WinRAR检查war文件,我注意到较小的war不包含WEB-INF\classes\WEB-INF和WEB-INF\classes\resource文件夹


整个代码库是相同的。POM.xml包含
maven编译器插件
,webapp和单元测试在这两个应用程序上运行良好,不同之处在于较小的WAR似乎没有包含语言位置的属性文件。

最有可能的是其中一台机器将损坏的工件存储在本地maven存储库中,或者指向带有损坏工件的镜像服务器。当工件具有无效的
pom.xml
或无法解析父项的
pom.xml
时,您将收到警告:

的POM无效,可传递依赖项(如果有)将不可用

检查控制台输出并确认没有此类警告。看

它也可能是Maven版本,在两台机器上使用的版本不同。这可能导致Maven War插件在不同版本中运行,其中一个可能会受到bug的影响。确保两个版本使用相同的Maven版本和配置,例如使用

还有一种可能性是,您有一个非标准构建,其中模块被手动绑定到各个阶段,例如绑定到
test
阶段的Maven Assembly插件。确保两台机器使用完全相同的命令构建工件


上面一般说明了为什么应该使用CI服务器来获得可复制的版本。

这两台机器之间的差异可能是位于~/.m2/settings.xml中的maven设置

考虑将maven包装器添加到项目中
@请参阅:

两个控制台输出相同。如何处理损坏的工件?@Cirko确保在内置控制台输出期间没有警告。没有警告,控制台输出是相同的。我已经对它们进行了并排检查。比较
mvn-X安装
output。它非常冗长,所以请使用
diff
。查找maven war插件的输出并比较所有插件执行ID。我已经删除了.m2文件夹,让项目再次构建maven依赖项,这就解决了问题!谢谢请坚持一致使用
mvn clean install
mvn clean package
(在您的本地回购中不安装WAR)。使用
mvn compile war:war
非常不同,无法正确构建war文件。简单地说,不……而且包装器将无助于解决s
settings.xml
中可能存在的差异。。。