2010-04-23 4 views
0

Я получаю ошибки сборки для моего проекта Maven, связанного с расширением Hibernate. - Это очень простое приложение, и я был в состоянии решить эту проблему на моем окне Linux вручную установив некоторые необходимые артефакты:Ошибка сборки Maven с Hibernate для Windows

mvn install:install-file -DgroupId=javassist -DartifactId=javassist 
-Dversion=3.9.0 -Dpackaging=jar -Dfile=foo.jar 

Это разработано (Hibernate как набор необходимых DEPS).

Но в случае Windows все по-другому. Как добавить зависимости вручную для Maven в Windows?

1) org.hibernate:hibernate:jar:3.3.2 

     Try downloading the file manually from the project website. 

     Then, install it using the command: 
      mvn install:install-file -DgroupId=org.hibernate -DartifactId=hibernate -Dversion=3.3.2 
-Dpackaging=jar -Dfile=/path/to/file 

    2) javassist:javassist:jar:3.9.0 

Могу ли я автоматизировать эту громоздкую ручную установку зависимостей для моих сотрудников на своих машинах Windows? Есть ли полезные инструменты или графический интерфейс, который может выполнять эти задачи? Лучшим способом было бы то, что Maven делает все это автоматически. Я не слишком хорошо знаком с этим самолетом.

Спасибо за ответы.

ответ

1

Во-первых, вы можете вручную установить артефакты в локальный репозиторий Maven в Windows точно так же, как и в вашем Linux-окне.

В идеале, как вы говорите, Maven сделает для вас тяжелую работу. Обычно вам не нужно устанавливать банки вручную: для большинства библиотек Maven будет знать, какие зависимости у каждой банки. По умолчанию Maven проверит the central repository и пару других. Чтобы получить доступ к банки в других хранилищах, просто добавить их в POM, следующим образом:

<project> 
     ... 
     <repositories> 
      <repository> 
       <id>jboss.maven2.repo</id> 
       <name>JBoss Maven Repo</name> 
       <url>http://repository.jboss.com/maven2</url> 
      </repository> 
      <!-- other repositories here --> 
     </repositories> 
     ... 
    </project> 

JBoss репо уже упоминалось выше, является хорошим, чтобы добавить. В нем много общих банок, в том числе банки для версии спящего режима, о которой вы говорили выше. Ссылочный его в pom.xml так:

<dependencies> 
    <!-- ... --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.2.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.3.0.ga</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 
</dependencies> 

После добавления этих зависимостей Maven будет также загружать библиотеки, эти библиотеки зависят, и так далее (в том числе библиотеки Javassist в вашем примере).

Наконец, как уже упоминалось в другой ответ, если у вас есть много сторонних библиотек для установки вашего проекта, которые не существуют в других хранилищах, вы можете установить менеджер хранилища, как Nexus, Artifactory или Archiva , который позволит вам выполнять команды установки, о которых вы упомянули, через веб-интерфейс.

+0

Это не правильная зависимость для спящего режима (упомянутый здесь просто помёт). –

+0

Хорошая точка :): обновлено. Новая версия протестирована. Спасибо за исправление – Daniel

1
  1. Вы можете использовать mvn install:install-file на вашей машине Windows, установить зависимости в локальное хранилище, а
  2. Вы можете изменить свой settings.xml добавить дополнительные зеркала репозитория, так что вы не полагаться только на центральный. Проверьте jboss, java.net и т. Д. Вы также можете настроить свой собственный менеджер репозитория (например, Nexus) для обработки зеркалирования, хранения артефактов вашей команды и т. Д .; а затем просто укажите каждую машину разработчиков в вашем репозитории.

См. Repository Management with Nexus и Reasons to use a Repository Manager для получения дополнительной информации.

1

Я смог решить эту проблему на своем Linux-боксе, вручную установив необходимые артефакты (...)

вручную устанавливать артефакт является плохой практикой (это делает ваши сборки не портативную, как вы испытываете) и, на самом деле, нет никаких причин, чтобы установить артефакты, которые вы ищете вручную, они оба доступны в JBoss repository. Так, добавьте его в список "заявленных" хранилищ:

<project> 
    ... 
    <repositories> 
    <repository> 
     <id>repository.jboss.org</id> 
     <name>Jboss Repository for Maven</name> 
     <url>http://repository.jboss.org/maven2</url> 
    </repository> 
    </repositories> 
    ... 
</project> 

А затем объявить следующие зависимости:

<dependencies> 
    <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>3.3.2.GA</version> 
    </dependency> 
    <dependency> 
    <groupId>javassist</groupId> 
    <artifactId>javassist</artifactId> 
    <version>3.9.0.GA</version> 
    </dependency> 
</dependencies> 

Обратите внимание на зависимость от hibernate-core (http://repository.jboss.org/maven2/org/hibernate/hibernate/3.3.2.GA/ содержит только POM).

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