У меня есть проект, над которым я работал несколько дней, и наконец-то я смог его скомпилировать. Однако клон git той же удаленной ветки (на той же машине, скомпилированный в том же экземпляре терминала) вызвал ошибку компиляции. У свежего клона на другой машине была та же ошибка. Я решил, что проблема в том, что в моем рабочем каталоге есть дополнительные неотслеживаемые файлы, но я удалил все неотслеживаемые файлы до точки, где diff
говорит, что каталоги идентичны, за исключением вещей, содержащихся в папке .git. Я даже проверил разрешения с помощью tree
и сравнил полученные файлы с meld
— они были в основном идентичными, хотя несколько исходных файлов имели немного разные разрешения на выполнение.
Ошибка возникла из-за файла, который я исключил в плагине maven-compiler-plugin. Это должно по сути означать, что имя файла никогда не передается в javac, хотя я точно не знаю, как это работает внутри. Я понимаю, что явно компилятор получает файл откуда-то, если он ошибается в коде внутри него. В той директории на моем компе, которая работала, ошибок нет и компилируется отлично. На других клонах репо (которые опять же идентичны по diff
) выдает ошибку на этом (исключенном) файле.
Дополнительные эксперименты показали, что на новой git clone
удаленной ветке, cp -R
локального каталога или git clone
локального каталога не удалось выполнить компиляцию. Однако, если я выполнил cp с параметром --archive
, компиляция в результирующем каталоге успешна. Я сузил его до флага --preserve=timestamps
(который включен из-за того, что --archive
совпадает с -dR --preserve=all
). Если вы не совсем уловили это, я повторю еще раз.
Когда я обычно копирую каталог, он отказывается правильно компилироваться. Только когда временные метки сохранены, он ведет себя так же, как исходный каталог.
Я этого не понимаю - почему компилятор java (или maven) заботится о временных метках?
mvn clean; mvn package
. Я тестировал как 2.4, так и 2.5 плагина. Файлы ДОЛЖНЫ быть скомпилированы, но из-за несвязанной ошибки maven не может сделать это должным образом (см. the-classpath-during-maven-android-build" title="базовые классы Java все еще находятся в пути к классам во время сборки maven android">stackoverflow.com/questions/11250352/), поэтому мне нужно реализовать один из несколько довольно ужасных обходных путей для правильной компиляции. Не используя src/main/java, все еще есть/src/com/example...
(тесты в другом месте). В процессе перехода с ant на maven. - person matt5784   schedule 06.07.2012