Требования : Java, Maven и Напильник.
1) Качаем
GIT-клиент (найти можно в Гугле).
2) Создаём директорию, допустим
tera
3) Правый клик мышью на директорию ->
Git Bash
4) В консоли пишем :
Код:
[B]git clone git://github.com/ATracer/tera-api.git[/B]
и жмём Enter, дожидаемся конца операции.
5) Переходим в директорию
\tera\tera-api\com.tera (там находится проект-аггрегатор) и выполняем
mvn clean install (или что более по душе).
Это собственно подготовка. Успешной компиляции по идее не будет, поэтому далее опишу несколько костылей и общую работу напильником :
1) Переходим в директорию
\tera\tera-api\com.tera и выполняем
Код:
[B]copy pom.xml "%USERPROFILE%\.m2\repository\com\tera\com.tera\1.0.0\com.tera-1.0.0.pom"[/B]
(можно было бы и mvn install:install-file ..., но это чтоб наверняка). Это для винды и пути если что проверить. Если что не так - можно и вручную скопировать и переименовать. [ Это устранит ошибку с "потерянным" parent pom ]
2) Зависимости. Я насчитал несколько штук, которые не были найдены в десятках репозиториях (конечно же из-за специфичных версий и различий в именах групп и артефактов). Все изменения будут вестись в pom.xml, о котором писал выше (кстати после изменений необходимо повторять первый шаг с копированием, т.к. подпроекты берут зависимости из parent pom в локальном репозитории).
а) org.eclipse: osgi:jar:3.6.0.v20100517 [ неверный id артефакта ]
добавляем :
Код:
<dependency>
<groupId>org.eclipse.osgi</groupId>
<artifactId>[B]org.eclipse.[/B]osgi</artifactId>
<version>${equinox.version}</version>
</dependency>
б) com.google.inject:guice:jar
napshot-r1189, com.google.inject:guice-assistedinject:jar
napshot-r1189
меняем версию с snapshot-r1189 на 2.0 :
Код:
<guice.version>[B]2.0[/B]</guice.version>
правим id группы и артефакта :
Код:
<dependency>
<groupId>com.google.inject[B].extensions[/B]</groupId>
<artifactId>guice-assisted[B]-[/B]inject</artifactId>
<version>${guice.version}</version>
<type>jar</type>
</dependency>
в) trove:trove:jar:2.1.0
берём альтернативу чуть старее (заменить зависимость) :
Код:
<dependency>
<groupId>net.sf.trove4j</groupId>
<artifactId>trove4j</artifactId>
<version>2.0.2</version>
</dependency>
Далее переходим в
com.tera.common.database :
здесь как вариант можно использовать обычные артефакты вместо bundle (выделенное - выпилить) -
Код:
<Embed-Dependency>mysql-connector-java[B]-bundle[/B],sqlite-jdbc[B]-bundle[/B],commons-dbcp</Embed-Dependency>
Код:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java[B]-bundle[/B]</artifactId>
<version>5.1.13</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc[B]-bundle[/B]</artifactId>
<version>3.7.2</version>
</dependency>
Также у всех подпроектов
com.tera.common.* имеется зависимость в
netty-3.2.1.Final (уже второй косяк по dependency managment
). Как худшее, но быстрейшее решение - добавить ко всем pom.xml репозиторий с этим артефактом :
Код:
<repositories>
<repository>
<id>atlassian-groups-public-m2-repo</id>
<name>Atlassian Groups Public Maven 2 Repository</name>
<url>https://maven.atlassian.com/content/groups/public</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
Кстати некоторые тесты проваливаются, посему можно в процессе их выключить (что не есть хорошо) -
-Dmaven.test.skip=true
Ну и наконец следует отметить что вышел скорее не мануал, а хинт "куда копать". На примере
com.tera.common.* я показал чего в основном можно ожидать компилируя дефолтный профиль и остальные, которые тоже придётся компилировать. Пример :
Код:
mvn clean install -P[B]id_профиля[/B]
Собственно id : gapi, gsaion, lapi, lsaion и paion.
З.Ы. Если ничего не понятно - лучше осваивать или отложить до лучших времён. Сейчас версия проекта 0.0.6-SNAPSHOT, что значит она ещё нестабильная и многое поменяется, возможно ...