Поручить Maven использовать сгенерированный путь Ivy - PullRequest
1 голос
/ 21 июня 2011

Мы добавляем новый код в существующий проект, который использует систему пользовательской сборки, разработанную с Ant и Ivy для управления зависимостями.

Используется наша новая команда Maven и его функции, такие как выполнение тестирования, отчеты cobertura и т. д.

Наш вопрос: возможно ли добавить pom.xml, соответствующий структуре текущего проекта, но дать Maven команду загрузитьего classpath из директории "lib" уже заполнен Айви?Другими словами: мы хотим использовать Maven без управления зависимостями.

Один действительно грязный подход заключается в том, чтобы сгенерировать один большой jar-файл из libdir и настроить pom.xml, чтобы он включал только это ... но мы считаем, что должен быть более чистый подход.*

Любая идея или рекомендация?

Примечание: мы не заинтересованы в создании pom.xml с зависимостями из конфигурации Ivy, мы просто хотим, чтобы Maven полагался на сгенерированный путь к классу Ivy.Нет необходимости различать test / runtime / compile classpath.

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Это наша последняя настройка для решения этой проблемы:

  • Для каждого старого проекта Ivy используйте ivy: makepom и проверку вручную, чтобы выяснить зависимости, которые нам нужно отправить в новые проекты (на основе Maven). Это разовый процесс для каждого проекта.
  • Измените устаревшую систему сборки таким образом, чтобы при каждом построении проекта идентифицированные зависимости также экспортировались в репозиторий mvn. Поскольку машина de build содержит внутреннее репо, мы просто используем mvn install .
  • В новых проектах maven объявите каждую зависимость в файле pom.xml и убедитесь, что система сборки выполняет сборки maven после устаревших сборок.

Спасибо всем за помощь!

0 голосов
/ 22 июня 2011

Может быть, будет полезна задача makepom , она создает pom из файла ivy.

Пример с этой страницы:

<ivy:makepom ivyfile="${basedir}/path/to/ivy.xml" pomfile="${basedir}/path/to/module.pom" conf="default,runtime">
   <mapping conf="default" scope="compile"/>
   <mapping conf="runtime" scope="runtime"/>
   <dependency group="com.acme" artifact="acme-logging" version="1.0" optional="true"/>
</ivy:makepom>
0 голосов
/ 22 июня 2011

Одна из возможностей - использовать область действия system для определения ваших зависимостей в maven. Это позволяет maven использовать jar-файлы, загруженные ivy для своих зависимостей.

, например

<dependencies>
    <dependency>
      <groupId>group.id</groupId>
      <artifactId>artifact</artifactId>
      <version>a.b.c</version>
      <scope>system</scope>
      <systemPath>${basedir}/lib/artifact-a.b.c.jar</systemPath>
    </dependency>
    ...
  </dependencies>
...