[devel] java spec cleanup example [was: obsolete macroses]
Igor Vlasenko
=?iso-8859-1?q?vlasenko_=CE=C1_imath=2Ekiev=2Eua?=
Чт Июл 24 18:19:30 MSD 2008
On Thu, Jul 24, 2008 at 01:16:29PM +0300, Igor Vlasenko wrote:
> On Wed, Jul 23, 2008 at 10:57:13AM +0400, Kirill Maslinsky wrote:
> > > > -%set_classpath /usr/share/java/junit.jar
> > > > +export CLASSPATH=$(build-classpath junit)
> > Кстати, а почему бы эту конструкцию не завернуть в макрос?
>
> Это дословная конструкция, а не самая удачная.
> Как если бы перевести "I have a friend" через
> "Я имею друга".
Расскажу на абстрактном примере сборки пакета malvina.
Пусть в build.xml этого пакета добавлена проверка на
наличие в classpath класса boy.class, при наличии
которого malvina.jar собирается с новыми возможностями.
Пусть ранее boy.class предоставлялся pierre.jar.
В результате изменений pierre.jar исчез, а
появился buratino.jar, который и предоставляет boy.class.
Теперь рассмотрим, что произойдет при использовании
в спек-файле различных конструкций.
1) %add_classpath /usr/share/java/pierre.jar
В этом случае пакет молча пересоберется без замечаний,
но malvina.jar потеряет существенную часть функциональности.
2) export CLASSPATH=$CLASSPATH:$(build-classpath pierre)
В этом случае пакет пересоберется,
malvina.jar потеряет существенную часть функциональности,
но в процессе сборки будет ругань, которую внимательный
майнтайнер может заметить и исправить пакет,
заменив pierre на buratino.
3) обычно при сборке через ant подключаемые библиотеки
ищутся в ./lib. В таком случае можно написать
ln -s $(build-classpath pierre) ./lib
Этот вариант превосходен тем, что malvina не захочет собирться
до тех пор, пока ее майнтайнер не сменит pierre на buratino.
--
Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine
Подробная информация о списке рассылки Devel