2015-10-15 7 views
0

Мы используем maven 2.2.1 для создания проекта. Мастер pom перечисляет модули, которые построены (некоторый проект WAR и некоторые «простые» JAR).Maven оставляет банку из WAR

Недавно мы добавили новую зависимость в один из WAR проектов:

<dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.2.6</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>commons-logging</artifactId> 
       <groupId>commons-logging</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>commons-codec</artifactId> 
       <groupId>commons-codec</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Когда построены локально из командной строки (МВНОВ чистого пакета) на компьютере разработчика, он отлично работает. Но при построении на автоматической системе сборки (по Хадсону) httpcore JAR (это зависимость от httpclient) не упакован в последнюю WAR. Об ошибках не сообщается, только JAR отсутствует.

The Maven settings.xml файлы идентичны (за исключением пути репо - единственный вариант заметно не по умолчанию является форума = верно). Что может быть неправильным?

+1

Это ... звучит невозможно ... Не могли бы вы запустить 'mvn package' на машине Hudson и посмотреть, не произойдет ли такой же эффект? Если да, то «mvn dependency: tree» как-то отличается от локального? – Deltharis

+0

Я только что запустил maven в системе сборки, и тот же эффект произошел: баннер httpcore отсутствует в сгенерированных WAR. Я сделал сборку на новой проверке исходных файлов. –

+0

Пожалуйста, запустите 'mvn dependency: tree -Dverbose' на машине с проблемой и без нее и проверьте, нет ли чего-то другого. – Deltharis

ответ

2

Единственное, что приходит мне на ум, это то, что ваша строительная машина имеет старую версию одного из ваших модулей в m2 repo. Очистить весь $HOME/.m2/repository (или где вы храните репо) и повторите попытку.

+0

Это хороший общий совет и будет выявлять проблемы с не перестраиваемыми модулями, когда они должен. – Deltharis

0

Неисправность. (и решена)

Вкратце: httpclient.jar в репо был без файла .pom. (Так Maven не знал, что имел зависимостей)

Long:

Это автономное хранилище, так что недостающие артефакты должны быть исправлены вручную. Проблема в том, что я сначала скопировал файлы в неправильную папку, а maven не «увидела» их. Затем «вслепую», а затем его совет:

Missing: 
---------- 
1) org.apache.httpcomponents:httpclient:jar:4.2.6 

    Try downloading the file manually from the project website. 

    Then, install it using the command: 
     mvn install:install-file -DgroupId=org.apache.httpcomponents -DartifactId= 
httpclient -Dversion=4.2.6 -Dpackaging=jar -Dfile=/path/to/file 

Это было бы просто скопировать файл банку с репо, без ПОМ.

Поэтому я просто скопировал полную папку для httpclient в репо (и его родительский и некоторые другие связанные файлы, которые maven затем жаловался).

Это форма пользовательской ошибки, я думаю.

+0

Ну, он копирует банку, но он _generates_ POM для вас (так как вы не указали один). Проблема состоит в том, что сгенерированный POM не указывает никаких зависимостей. Для этой команды есть флаг '-DpomFile', который бы решил его для вас. – Daniel

Смежные вопросы