помощь в использовании артефактов maven

Я изучаю Maven, и мне понадобится небольшая помощь, чтобы начать. Я использую плагин m2eclipse (Maven) и хочу создать такой проект, как Struts 2, Hibernate 3, MySQL. Сейчас я просто создаю простой проект с архетипом: maven-archetype-webapp

Какие зависимости мне нужно добавить?


person Scandolous    schedule 13.09.2010    source источник
comment
Mais quelle est la question ici? | Так в чем тут вопрос?   -  person Romain Linsolas    schedule 13.09.2010
comment
Какие зависимости мне нужно добавить?   -  person Scandolous    schedule 13.09.2010


Ответы (3)


Пока я просто создаю простой проект с архетипом: maven-archetype-webapp

Я предлагаю вместо этого использовать архетип struts2-archetype-blank для начальной загрузки вашего приложения Struts 2. Вы можете вызвать его либо из m2eclipse (через мастера), либо из командной строки. Например из командной строки:

mvn archetype:generate -B \
                       -DgroupId=tutorial \
                       -DartifactId=tutorial \
                       -DarchetypeGroupId=org.apache.struts \
                       -DarchetypeArtifactId=struts2-archetype-blank \
                       -DarchetypeVersion=2.2.1

Добавьте необходимые зависимости для Hibernate 3 и драйвера MySQL JDBC. Как часто, есть несколько способов сделать это:

  • вручную (путем добавления <dependency> элементов в pom.xml)
  • using the m2eclipse wizards
    • via the dependencies tab of the pom editor
    • с помощью щелкните правой кнопкой мыши проект, а затем выберите Maven > Добавить зависимости.
  • через параметры быстрого исправления Eclipse

В записи блога Добавление зависимостей с помощью m2eclipse есть скрин-каст, демонстрирующий некоторые из них.

Какое бы решение вы ни выбрали, в конце ваш pom.xml должен как минимум объявить следующие зависимости:

<project>
  <dependencies>
    ...
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.2.1</version>
    </dependency>
    ...
    <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>
    ...
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.13</version>
    </dependency>
  </dependencies>

</project>

И если вы хотите использовать последнюю версию артефактов Hibernate, вам придется добавить репозиторий JBoss под элементом repositories, поскольку они недоступны в центральном репозитории maven (извините за усложнение, но, ну, вот как обстоят дела являются):

<project>
  <dependencies>
    ...
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>3.5.5-Final</version>
    </dependency>
    ...
  <dependencies>
  ...
  <repositories>
    <repository>
      <id>repository.jboss.org-public</id>
      <name>JBoss repository</name>
      <url>https://repository.jboss.org/nexus/content/groups/public</url>
    </repository>
  </repositories>
  ...
</project>
person Pascal Thivent    schedule 13.09.2010
comment
спасибо за вашу помощь, но когда я хочу выбрать struts2-archetype-blank в мастере, его нет - person Scandolous; 13.09.2010
comment
@Scandolous Тогда индекс артефактов, вероятно, устарел. Вы можете принудительно перестроить индекс из представления репозитория, если я не ошибаюсь. Или запустите команду в командной строке. - person Pascal Thivent; 13.09.2010
comment
почему у меня возникает эта ошибка при компиляции проекта: отсутствует артефакт javassist:javassist:jar:3.9.0.GA:compile - person Scandolous; 14.09.2010
comment
@Scandolous Ах, действительно, Maven Central имеет только версию 3.8.0.GA. Добавьте репозиторий JBoss, как было предложено. - person Pascal Thivent; 14.09.2010

Вам просто нужно найти стойки или любые зависимости и поместить их в свой файл pom. Немного о зависимостях:

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

person ant    schedule 13.09.2010
comment
просто я ставлю зависимости ..? Например, когда я устанавливаю зависимости для Hibernate, почему он не генерирует файл в моем проекте, например hibernateconfig.xml ..? - person Scandolous; 13.09.2010

Архетипы в Maven используются для создания простой структуры для проектов определенного типа. По сути, он создаст файл pom.xml, структуру каталогов с использованием соглашений Maven и несколько простых файлов. Некоторые архетипы будут создавать более сложные структуры, в зависимости от того, с каким типом проекта они связаны.

В вашем случае у MySQL и Hibernate нет конкретной информации в Maven, кроме зависимостей. Поэтому лучше всего создать веб-структуру, в конечном итоге используя Архетип Struts Maven (я никогда его не использовал, поэтому не могу сказать, хорошее качество этого архетипа или нет), а затем добавить соответствующие зависимости драйвера Hibernate/MySQL.

Вы можете использовать сайт MvnRepository, чтобы найти groupId, artifactId или version конкретной зависимости.

На ваше усмотрение я предлагаю библиотеки org.hibernate:hibernate:3.xx и mysql:mysql-connector-java (используйте область действия runtime для драйвера JDBC):

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.1.3</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.13</version>
    <scope>runtime</scope>
</dependency>
person Romain Linsolas    schedule 13.09.2010
comment
хорошо, я поместил эту зависимость в свой pom.xml, я не понимаю о драйвере JDBC, я должен добавить зависимости драйвера JDBC.? - person Scandolous; 13.09.2010
comment
Вы добавляете его в список зависимостей, но используя область видимости runtime. Таким образом, эта зависимость не будет использоваться во время компиляции или модульного тестирования, а будет включена в окончательный пакет (ваш файл WAR). - person Romain Linsolas; 13.09.2010