Сегодня я вижу чрезвычайно странную проблему с 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=Cp1252
в mvn compile
, но это не решение, потому что в моем проекте должна использоваться кодировка utf-8
. Разумеется, при компиляции таким образом я вижу AppConstants.class
под target/classes/
, но откуда он может исходить? Как это возможно?
Недавно ничего не изменилось в помпе проекта, но я знаю, что зависимый проект работает над переходом на Maven в эти дни. Что может быть?
UPDATE
В моем проекте нет файла AppConstants.java
, а AppConstants
не упоминается нигде внутри проекта:
$ grep -ri AppConstants . # finds nothing
$ find . | grep -i AppConstants # finds nothing
Этот AppConstants
существует в другом проекте, от которого зависит мое действие. У меня нет исходного кода этого другого проекта на моем ПК. Мои товарищи по команде могут воспроизвести эту проблему, это не относится к моему компьютеру. В последнее время наша поместья не изменилась, но мы знаем, что в последнее время жребий другой команды сильно меняется.
В моем проекте есть один класс, который использует класс SomeOther
из другого проекта. Если я создаю с помощью -Dproject.build.sourceEncoding=Cp1252
, то сборка работает, а в моей папке target
я вижу SomeOther.class
, AppConstants.class
и несколько других кланов из другого сгенерированного проекта. Если я удалю из моего проекта класс, который использует SomeOther
, то я могу нормально построить, хотя проект не будет работать, так как ему нужны эти другие классы.
@Gus: Зная, что это в
SomeOther
, можете ли вы создать общедоступный образец проекта, который проявляет такое же поведение? В противном случае опишите иерархию, и где вы используетеmvn compile
из... у вас есть многомодульный проект, и вы строите подпроект?
Слишком сложно создать общедоступный образец. Мой проект является многомодульным, когда я запускаю mvn compile
вверху, он терпит неудачу в подмодуле, поэтому для более быстрой итерации я вместо этого запускаю в подмодуле. Результат тот же, но быстрее. Но вы заставили меня подумать: я проверю, генерируют ли наши сборки файлы .class
для других проектов в других подмодулях.
Общий код и полный pom
Это работает, поэтому я не могу поделиться полным кодом и помпой, к сожалению. Я могу включить анонимные фрагменты, если вы запрашиваете определенные разделы.