2010-10-13 4 views
3

Мы планируем использовать Maven для большой сборки нескольких проектов, чтобы дать вам представление о размере, некоторые из подпроектов имеют несколько миллионов строк кода.Lazy зависимости от проекта с несколькими проектами Maven

Идеальная структура будет что-то вроде:

  • Projecta
    • module1
    • module2
  • projectB
    • moduleAlpha (зависит от moduleBeta)
    • moduleBeta (зависит от Projecta: module1)
  • ...

Где каждый модуль на самом деле является Maven подпроект, а зависимости не всегда на уровне артефактов (т.е. банки), а скорее заставляют подпроект компилироваться по мере необходимости.

Добавление общий корень проекта позволяет для выражения зависимостей, как описано, например:

  • Проект корня
    • PROJECTA
      • module1
      • module2
    • pr ojectB
      • moduleAlpha (зависит от moduleBeta)
      • moduleBeta (зависит от Projecta: module1)
    • ...

Но силы строить из проекта корня , Помните, что это очень большой проект, и полная сборка будет чем-то, что не всегда желательно.

Большинство команд работают на ProjectX уровне некоторые даже на MODULEX уровне.

Нам нужно, чтобы иногда строить с созданным артефактом (то есть банку, созданной module1), в другие моменты, которые мы хотим построить из исходного кода.

Я ознакомился с плагином реактора, который позволяет вам возобновить сборку с определенной точки или построить только иждивенцев. Но это кажется очень ручным (хотя в некоторых случаях это очень полезно).

Что я рисую - это хранилище артефактов какого-то типа, которое создает артефакт, когда это необходимо. Например, составление projectA артефактный репозиторий, который projectB ссылки. Если вам почему-то нужно перестроить артефакт projectA, вы можете просто удалить банку.

Что-то вроде того, что реализовано как часть Maven или как плагин? Если нет, можно ли это реализовать?

ответ

3

Нам нужно, чтобы иногда возникать из-за сгенерированного артефакта (то есть баночки, созданного модулем 1), в другое время мы хотим построить из исходного кода.

Я не вижу никаких особых проблем здесь:

  • , когда вы хотите, чтобы построить против бинарных зависимостей (банки), просто построить артефакт вы работаете (и пусть Maven решимость и использовать бинарные зависимости)
  • , когда вы хотите, чтобы построить против исходного кода, использовать реактор сборку и дополнительные параметры реактора, например, для построения зависимостей moduleAlpha и moduleAlpha:

    mvn -pl moduleAlpha -am 
    

Что я рисую - это хранилище артефактов определенного типа, которое создает артефакт, когда это необходимо. Например, создание projectA - хранилище артефактов, которое ссылается на projectB. Когда вам почему-то нужно перестроить артефакт projectA, вы можете просто удалить банку.

Я не уверен, чтобы понять, что вы говорите и удаления JARs не звучит как хорошая идея.

Что вам нужно - это непрерывный процесс сборки, который как можно чаще создает весь проект для создания SNAPSHOT всех модулей и развертывания их в корпоративном репозитории. Это просто путь.

Чтобы сделать сборку как можно быстрее, я бы предпочел использовать Maven 3.x и опцию parallel builds.