Maven如何构建不在我的项目中的类?

 YOYO很快乐的傻瓜 发布于 2023-02-03 12:00

我今天看到了Maven的一个非常奇怪的问题:它正在尝试构建不在我的项目中但来自依赖项的类.mvn compile崩溃:

...
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] AppConstants.java):[4,12] unmappable character for encoding UTF-8
...

AppConstants.java在我的项目中没有,并且搜索grep -r AppConstants .没有给出任何结果.该类存在于另一个工件中,该工件是我的项目的依赖项.

我设法得到我的项目通过传递编译-Dproject.build.sourceEncoding=Cp1252mvn compile,但这不是解决办法,因为我的项目应该使用utf-8的编码.果然,当编译这样,我看AppConstants.classtarget/classes/,但它在哪里可以从何而来?这怎么可能?

最近项目的pom没有任何变化,但我知道依赖项目正在努力迁移到Maven这些天.会发生什么事?

UPDATE

AppConstants.java我的项目中没有文件,项目AppConstants中的任何地方都没有提到:

$ grep -ri AppConstants .         # finds nothing
$ find . | grep -i AppConstants   # finds nothing

AppConstants存在于我所依赖的另一个项目中.我的电脑上没有其他项目的源代码.我的队友都可以重现这个问题,这不是我的电脑特有的.我们的pom最近没有改变,但我们知道其他团队的pom现在正在发生很大的变化.

我的项目中有一个类使用SomeOther其他项目中的类.如果我建立使用-Dproject.build.sourceEncoding=Cp1252,那么建筑工作,而我的target文件夹我看SomeOther.class,AppConstants.class并从其他项目中的其他一些clases产生.如果我从我的项目中删除使用的类SomeOther,那么我可以正常构建,虽然项目将无法工作,因为它需要其他类.

@Gus:知道它是否存在SomeOther,您是否可以制作具有相同行为的公共安全示例项目?如果做不到这一点,请描述层次结构,以及你在哪里运行mvn compile......你是否有一个多模块项目,而你正在构建一个子项目?

太难创建一个公共安全的样本.我的项目是多模块的,当我mvn compile在顶部运行时,它在子模块中失败,所以为了更快的迭代,我一直在子模块中运行.结果相同但更快.但是你让我想到:我将检查我们的构建是否.class为其他子模块中的其他项目生成文件.

共享代码和完整的pom

这是有效的,所以我不能分享完整的代码和pom.如果您要求特定部分,我可以包含匿名片段.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有