Java-конструктор с правильной обработкой зависимостей - PullRequest
1 голос
/ 02 июня 2009

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

Мне нужен конструктор, который знает, как перекомпилировать для меня все необходимые файлы .java.

Например для этой структуры

public class A { ]
public class B extends A {}
public class C {
    B b;
}
  1. Для: Compile ('C') Будет знать для компиляции A, B, C.
  2. Для: B изменено, Compile ('C') будет знать, что перекомпилировать только B.

Я знаю несколько альтернатив, Плющ , который выглядит как расширение муравья, который является нашим текущим Java-сборщиком. Scons , которые мы в настоящее время используем для создания кода на C ++, scons отлично справляется с описанным выше поведением для кода C. Затем есть сообщения о том, что Maven почти почти, но не совсем .

Что бы вы предложили? Какими инструментами вы пользуетесь Free Software / Commercial для своей системы?

Спасибо, Максим.

Ответы [ 4 ]

1 голос
/ 13 декабря 2010
  1. Ant, с зависимой задачей и с включенной опцией закрытия
  2. make, от IDEA ide
1 голос
/ 13 июля 2009

Ни один из плюща, булочки или мавена не поможет вам с вашей проблемой, как указано.

  1. Что вы подразумеваете под "для компиляции ('C')"? Я не думаю, что это то, что у вас есть в вашем файле муравья.
  2. В этом случае Ant должен работать как нужно: вы описали его поведение по умолчанию. В том же элементе javac Ant будет перекомпилировать только измененные классы. См. Запись Руководство по Ant для задачи javac, особенно для атрибута includeDestClasses.

Возможно, вам следует опубликовать пример файла муравья, который вы считаете неадекватным.

0 голосов
/ 02 июня 2009

В своем вопросе вы описываете межклассовые зависимости. Большинство систем сборки, в частности Maven, нацелены больше на межпроектные зависимости. Я считаю, что большинство систем просто перекомпилируют все классы в проекте, и большинство преимуществ этих систем сборки заключается в создании как можно меньшего количества проектов.

И Maven, и Ivy позволят вам легко указывать как внешние, так и внутренние зависимости вашего проекта, в том числе от версии вашего проекта. Они оба также автоматически загружают внешние библиотеки (такие как Apache Commons) на ваш локальный компьютер как часть процесса сборки, если они еще не кэшированы локально, сохраняя большую часть работы по ручной загрузке и организации сторонних jar-файлов.

Плющ - это расширение муравья, как вы упомянули. Я рекомендую Maven. Это условно-ориентированная система сборки, которую я успешно использовал и чувствую, что она достаточно зрелая. Maven требует гораздо меньших предварительных усилий, чтобы начать использовать, и он вполне расширяемый.

0 голосов
/ 02 июня 2009

maven, как для моих личных, так и для коммерческих продуктов

...