Java/HOWTO
Материал из ALT Linux Wiki
(→Сборка с помощью maven1) |
(→Сборка с помощью ant) |
||
Строка 33: | Строка 33: | ||
== Сборка с помощью ant == | == Сборка с помощью ant == | ||
+ | |||
+ | === %prep === | ||
+ | |||
+ | Обычно проекты на ant таскают с собой готовые собранные сторонние библиотеки, | ||
+ | необходимые для сборки. Все эти библиотеки необходимо удалить | ||
+ | find . \( -name '*.jar' -or -name '*.zip' \) -exec rm -f {} \; | ||
+ | либо переместить: | ||
+ | find . \( -name '*.jar' -or -name '*.zip' \) -exec mv {} {}.no \; | ||
+ | |||
+ | Пакеты не должны использовать при сборке эти готовые сторонние собранные библиотеки, а должны использовать вместо них библиотеки, собранные в Сизифе. Если какой-то готовой сторонней собранной библиотеки в Сизифе нет, ее необходимо сначала туда собрать. | ||
+ | |||
+ | Пусть, например, до удаления ls ./lib показывало | ||
+ | ls ./lib | ||
+ | commons-cli.jar | ||
+ | xerces-j.jar | ||
+ | |||
+ | Нам нужно использовать вместо них библиотеки, собранные в Сизифе. | ||
+ | Для этого установим в сборочную среду пакеты jakarta-commons-cli и xerces-j2. | ||
+ | теперь добавим в проект вместо удаленных библиотек ссылки на библиотеки из Сизифа. | ||
+ | |||
+ | ln -s $(build-classpath commons-cli) ./lib/commons-cli.jar | ||
+ | ln -s $(build-classpath xerces-j2) ./lib/xerces-j.jar | ||
+ | |||
+ | Заметим, что в Сизифе jar называется xerces-j2.jar, но в проекте ожидается xerces-j.jar. | ||
+ | |||
+ | === %build === | ||
+ | |||
+ | смотрим в build.xml, какие там есть цели. | ||
+ | Нужная цель скорее всего будет одной из | ||
+ | ant all | ||
+ | ant jar javadoc | ||
+ | ant dist | ||
+ | |||
+ | Для небольших проектов можно не заниматься наполнением ./lib, а просто | ||
+ | перечислить все необходимые библиотеки в переменной CLASSPATH: | ||
+ | |||
+ | export CLASSPATH=%(build-classpath commons-cli xerces-j2) | ||
+ | ant -Dbuild.sysclasspath=first dist | ||
+ | |||
+ | === %install === | ||
+ | Внимательно перечитайте JPackage Policy. | ||
+ | |||
+ | Tips: | ||
+ | |||
+ | * устанавливайте arch-и jvm -независимые jar в %_javadir, arch-зависимые в %_jnidir, jvm-specific в %_javadir-ext. | ||
+ | * не забудьте %name-%version.jar. | ||
+ | * симлинк %name.jar и симлинки с другими употребительными именами. | ||
+ | * Для больших проектов создавайте поддиректорию %_javadir/%name/. | ||
== Сборка с помощью maven1 == | == Сборка с помощью maven1 == |
Версия 12:28, 1 ноября 2008
Содержание |
Предварительные сведения
Прежде чем читать данный документ, необходимо ознакомиться с ALTLinux Java Policy и JPackagePolicy. Оригинал JPackagePolicy можно найти в пакете jpackage-utils (в сизифе или на www.jpackage.org). Также доступен Перевод JPackagePolicy на русский.
Определение типа сборочной системы
тип сборочной системы можно определить по файлам в корневом каталоге проекта.
Наиболее распространенные системы сборки:
файл | сборочная система |
build.xml | ant |
maven.xml | maven1 |
pom.xml | maven2 |
Существуют и другие системы сборки для java, но из-за их редкости здесь они рассматриваться не будут.
Сборка с помощью ant
%prep
Обычно проекты на ant таскают с собой готовые собранные сторонние библиотеки, необходимые для сборки. Все эти библиотеки необходимо удалить find . \( -name '*.jar' -or -name '*.zip' \) -exec rm -f {} \; либо переместить: find . \( -name '*.jar' -or -name '*.zip' \) -exec mv {} {}.no \;
Пакеты не должны использовать при сборке эти готовые сторонние собранные библиотеки, а должны использовать вместо них библиотеки, собранные в Сизифе. Если какой-то готовой сторонней собранной библиотеки в Сизифе нет, ее необходимо сначала туда собрать.
Пусть, например, до удаления ls ./lib показывало
ls ./lib commons-cli.jar xerces-j.jar
Нам нужно использовать вместо них библиотеки, собранные в Сизифе. Для этого установим в сборочную среду пакеты jakarta-commons-cli и xerces-j2. теперь добавим в проект вместо удаленных библиотек ссылки на библиотеки из Сизифа.
ln -s $(build-classpath commons-cli) ./lib/commons-cli.jar ln -s $(build-classpath xerces-j2) ./lib/xerces-j.jar
Заметим, что в Сизифе jar называется xerces-j2.jar, но в проекте ожидается xerces-j.jar.
%build
смотрим в build.xml, какие там есть цели. Нужная цель скорее всего будет одной из
ant all ant jar javadoc ant dist
Для небольших проектов можно не заниматься наполнением ./lib, а просто перечислить все необходимые библиотеки в переменной CLASSPATH:
export CLASSPATH=%(build-classpath commons-cli xerces-j2) ant -Dbuild.sysclasspath=first dist
%install
Внимательно перечитайте JPackage Policy.
Tips:
- устанавливайте arch-и jvm -независимые jar в %_javadir, arch-зависимые в %_jnidir, jvm-specific в %_javadir-ext.
- не забудьте %name-%version.jar.
- симлинк %name.jar и симлинки с другими употребительными именами.
- Для больших проектов создавайте поддиректорию %_javadir/%name/.
Сборка с помощью maven1
maven1 является устаревшим, и новые проекты мигрируют на maven2. Поэтому сборка с помощью maven1 рассматриваться не будет.
При необходимости рекомендуется найти в Сизифе пакеты с
- BuildRequires: maven-plugins
или BuildRequires: maven и провести сборку, используя найденные пакеты как пример.