Данный документ описывает сборку и разработку самого Apache Edgent, а не методы разработки приложений Edgent.
Общественность Edgent приветствует вклады, пожалуйста, Присоединяйтесь к нам!
Если вас интересует разработка нового коннектора, обратитесь к разделу Писание Коннекторов для Приложений Edgent
Дополнительную информацию, включая внутренние и дизайнерские заметки, можно найти на странице Wiki Edgent.
См. обновленные разделы Сборка и Использование Eclipse ниже. Инструменты Ant и Gradle больше не поддерживаются. Рекомендуется разработчикам Edgent создавать новое рабочее пространство вместо переиспользования текущих рабочих пространств на основе Gradle.
Ветка develop
используется для разработки. Jenkins настроена для сборки этой ветки и публикации внутренних результатов сборки SNAPSHOT в репозиторий SNAPSHOTS Apache Nexus (https://repository.apache.org/content/repositories/snapshots).
Ветка master
содержит выпущенный код. Выпуски публикуются в репозиторий выпусков Apache Nexus (https://repository.apache.org/content/repositories/releases). Репозиторий выпусков автоматически зеркалируется в центральный репозиторий Maven.Дополнительный обзор веток и их содержимого можно найти в файле src/site/asciidoc/releasing.adoc
. Гайд руководителя выпуска также может помочь прояснить некоторые моменты (https://cwiki.apache.org/confluence/display/EDGENT/Release+Manager%27s+Guide).
После того как вы форкнули репозиторий и создали локальную копию, вам потребуется скачать эти дополнительные средства разработки.
toolchain
Maven используется как средство сборки. В настоящее время есть два варианта:
mvnw
или mvnw.bat
— предпочитаемый вариант)mvn
)Maven-wrapper автоматически скачивает и устанавливает правильную версию Maven и использует её. Кроме этого, нет различий между использованием команд mvn
и mvnw
.
Вы можете использовать также интегрированную среду разработки с поддержкой Maven для разработки Edgent. Например, см раздел "Использование Eclipse" ниже.
Все разработки времени выполнения Edgent выполняются с использованием Java 8. JARы для платформ Java 7 и Android создаются путём обратной совместимости скомпилированного кода Java 8 с помощью инструмента retrolambda
. Подробнее об этом ниже.По умолчанию сборка использует Java 8 для сборки модулей Java 7 и Android. Чтобы надёжно тестировать модули Java 7 на реальной среде выполнения Java 7, мы определили дополнительный профиль toolchain
, который позволяет Maven выполнять тестирование модулей Java 7 на реальной среде выполнения Java 7.
Для подготовки к тестированию модулей Java 7 и Android с включённой поддержкой toolchain
, отредактируйте или создайте файл ~/.m2/toolchains.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>oracle</vendor>
</provides>
<configuration>
<jdkHome>{путь до Java 8 SDK}</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>1.7</version>
<vendor>oracle</vendor>
</provides>
<configuration>
<jdkHome>{путь до Java 7 SDK}</jdkHome>
</configuration>
</toolchain>
</toolchains>
Установите значения jdkHome
соответственно вашей системе.
например, на системе macOS:
j8 jdkHome: /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
j7 jdkHome: /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
Любой запрос на внесение изменений ожидается с поддержанием успешной сборки mvn package
.
Чтобы собрать и протестировать для Java 8
$ ./mvnw clean package # -DskipTests чтобы пропустить тесты
Чтобы собрать и правильно протестировать библиотеки Edgent для Java 7 и платформы Android,
необходимо установить Java 7 JRE и настроить toolchains.xml
, как указано выше, затем
$ ./mvnw clean package -Djava8.home=$JAVA_HOME -Ptoolchain,platform-java7,platform-android
```### Документация всех определённых профилей Maven
Создана группа профилей Maven для контроля за тем, какие части должны быть собраны. По умолчанию профиль собирает и проверяет версии Java 8 всех модулей и не собирает двоичное распределение, так как обычно это шаг не требуется от сборки Maven. Он также не собирает модули Java 7 или Android.
Edgent имеет следующие профили:
- `apache-release`: Создает пакет источника под `target`.
- `distribution`: Создает одно двоичное распределение под `distribution/target` для Java 8. Если активированы профили Java 7 и Android, то для каждого из этих создаётся дополнительное двоичное распределение.
- `platform-java7`: Создает версии Java 7 всех модулей Edgent и запускает тесты.
- `platform-android`: Создает версии Android всех модулей Edgent, совместимых с Android (См. [JAVA_SUPPORT.md](JAVA_SUPPORT.md)).
- `toolchain`: Запускает тесты в модулях Java 7 и Android используя среду выполнения Java 7 вместо версии Java 8, что происходит если этот профиль не активирован. Как модули Android основаны на версиях Java 7, при сборке профиля `platform-android` также требуется включить профиль `platform-java7`, иначе сборка завершится ошибкой.
Для двухчасового введения в Maven вы можете посмотреть следующее видео, созданное нами для другого проекта Apache: https://vimeo.com/167857327
## Сборка Edgent для использования
**Примечание:** выпуски Apache Edgent включают удобные бинарники. Их использование подробно описано в [samples/APPLICATION_DEVELOPMENT.md](https://github.com/apache/incubator-edgent-samples/blob/develop/APPLICATION_DEVELOPMENT.md).Если же вы хотите собрать Edgent для своего использования, существуют два различных сценария:
1. Сборка Edgent для использования с Maven-проектом.
2. Сборка Edgent для использования с интегрированным инструментарием, не использующим Maven.
### Сборка Edgent для использования с Maven
Собираем, тестируем и устанавливаем Java8-версии Edgent в локальном репозитории Maven
```sh
$ ./mvnw clean install # -DskipTests чтобы пропустить тесты
Чтобы собрать, но не тестировать Java 7 и Android платформенные jar-файлы:
$ ./mvnw clean install -DskipTests -Pplatform-java7,platform-android
Чтобы правильно собрать и протестировать Java 7 и Android платформенные jar-файлы,
необходимо наличие установленной среды выполнения Java 7 JRE и конфигурации toolchains.xml
, затем
$ ./mvnw clean install -Djava8.home=$JAVA_HOME -Ptoolchain,platform-java7,platform-android
Соберите Edgent как указано выше, чтобы заполнить локальный репозиторий Maven.
Затем обратитесь к samples/APPLICATION_DEVELOPMENT.md за информацией о скрипте get-edgent-jars.sh
.
Альтернативой использованию скрипта get-edgent-jars.sh
является создание пакета двоичного распределения, состоящего из jar-файлов времени выполнения Edgent и их внешних зависимостей.
Создайте пакет двоичного распределения для Java 8
$ ./mvnw clean package -DskipTests -Pdistribution
```Пакет распределения создаётся в директории `distribution/target`.
Директория `libs` внутри пакета содержит JAR-файлы Edgent,
а директория `ext` содержит сторонние зависимости, необходимые JAR-файлам Edgent.**Примечание:** каждая сторонняя зависимость в пакете приходит со своими условиями лицензии и авторских прав, которые вы принимаете автоматически при использовании пакета распределения. Подробнее см. файл README в пакете. Для настройки CLASSPATH вам потребуется выполнить это вручную при использовании средств сборки для вашего приложения Edgent.
Чтобы также собрать JAR-файлы Edgent для платформ Java 7 и Android:
```sh
$ ./mvnw clean package -DskipTests -Pdistribution -Pplatform-java7,platform-android
Пакеты распределения будут находиться в директориях platforms/java7/distribution/target
и platforms/android/distribution/target
соответственно.
Когда создается запрос на вытягивание (pull request) на сайте зеркала GitHub, сервис Travis CI выполняет полную сборку модулей Java 8.
Статус последней сборки проекта можно просмотреть по адресу: https://travis-ci.org/apache/incubator-edgent/branches
Настройки сборки содержатся в файле .travis.yml
, расположенном в корневой директории проекта. В него входят:
edgent.build.ci=true
установлено, некоторые компоненты среды выполнения и тестирования увеличивают нормальное значение времени ожидания (например, в 10 раз).Это влияет на выполнение тестов в Travis CI и Jenkins (оба устанавливают edgent.build.ci
).См. также:
* TStreamTest.waitForCompletion()
* AbstractTester.complete()
* Executable.invokeAction()
* поиск использования `edgent.build.ci` в других местах
* возможно, следует удалить другие специфичные для тестов использования этого свойства в свете общих изменений
Теперь лучше избежать следующего: Если ваш тест случайно проваливается из-за того, что он зависит от публично доступных служб тестирования или является временно зависимым, а вариации времени на серверах Travis CI делают его более вероятным провалом, вы можете отключить выполнение этого теста на Travis CI с помощью следующего объявления:
@Test
public void testMyMethod() {
assumeTrue(!Boolean.getBoolean("edgent.build.ci"));
// ваш код теста здесь
...
}
Закрытие и повторное открытие запроса на вытягивание запустят новую сборку для этого запроса.
Кроме выполнения быстрых тестов только для модулей Java 8 с помощью Travis CI, мы также настроили дополнительные задачи сборки на экземпляре Jenkins Apache по адресу https://builds.apache.org/view/E-G/view/Edgent/. Этот сборочный процесс также автоматически запускается при каждом коммите, но в отличие от сборки Travis, он также собирает и проверяет модули Java 7 и Android с использованием профиля toolchain.
Это также сборка, которая производит и разворачивает артефакты Maven, публикуемые в репозиторий Apache Maven по адресу https://repository.apache.org/.Как дополнительный инструмент обеспечения качества, эта сборка также выполняет анализ SonarQube, результаты которого доступны на экземпляре SonarQube Apache по адресу https://builds.apache.org/analysis/overview?id=45154
Обратите внимание: инструмент отчетности о проваленных тестах Jenkins иногда путается в случае одинаково названных тестов, запущенных для нескольких платформ. В целом вы будете видеть каждый файл тестов дважды: один раз для Java8 и один раз для Java7. В результатах в виде HTML невозможно определить, для какой платформы проваленный тест (или пройденный тест, если говорить об этом) применим. Даже хотя ссылки для двух тестов различаются (например, второй имеет "_2" в конце URL), страница с проваленным тестом может показывать страницу с пройденным тестом. Моё решение по исследованию ошибок состоит в том, чтобы открыть страницу "Просмотр как обычный текст" и затем использовать функцию поиска браузера для поиска имени интересующего теста, чтобы найти вывод для проваленного теста. Уфф.
Поддержка целевых платформ Java 7 и Android осуществляется с помощью
retrolambda для преобразования JAR-файлов Edgent Java 8 в JAR-файлы Java 7. Для удобства,
для каждого модуля Java 8 существует соответствующий модуль Java 7, расположенный внутри директории <edgent>/platforms/java7
.
Для Android существуют только те аналоги, которые обычно поддерживаются на Android.В общем, все модули Java 7 отличаются от обычных версий Java 8 тем, что эти модули не содержат никакого исходного кода или ресурсов. Они создаются путём распаковки содержимого JAR-файлов Java 8 в текущую директорию модуля. Таким образом, выходные данные фактически располагаются в том же месте, где они были бы, если бы компилировались обычной версией Java 8. Затем запускается плагин Retrolambda для преобразования существующих классовых файлов в те, которые совместимы с Java 7. Версии Android значительно проще, так как они просто распаковывают версии Java 7, а затем заново упаковывают содержимое с групповым идентификатором android
. Все, кроме двух модулей, доступных в настоящее время только для Android (расположены в директории <edgent>/platforms/android/android
), строятся аналогично версиям Java 8, но также содержат выполнение плагина Retrolambda. Хотя можно было бы рассматривать эти модули как версии Java 7, ради равномерного программирования было решено сделать возможным использование одного и того же типа кода для всех модулей. Зависимость модуля Android от версии Java 7 делает очевидной необходимость сборки версий Java 7 для сборки версий Android.
См. JAVA_SUPPORT.md для информации о том, какие возможности / JAR поддерживаются в каждом окружении.
Также см. раздел Кодирование конвенций ниже.## Отчеты тестирования
Обычная сборка Maven состоит из двух фаз юнит-тестирования. Первая фаза юнит-тестирования выполняется плагином surefire Maven, вторая фаза интеграционного тестирования выполняется плагином failsafe Maven.
При выполнении обычной команды Maven package
выполняется только фаза юнит-тестирования.
При выполнении команд verify
или выше (install
, deploy
, и т.д.), также выполняются интеграционные тесты.
Каждый плагин Maven производит вывод в различные директории:
<module>/target/surefire-reports
— отчеты о юнит-тестах JUnit<module>/target/failsafe-reports
— отчеты о интеграционных тестах JUnitКроме выполнения юнит-тестов, данные о покрытии автоматически собираются плагином jacoco-maven-plugin
, который настроен для хранения своих данных в директории <module>/target/coverage-reports
в файлах jacoco-ut.exec
и jacoco-it.exec
.
Хотя выходные данные surefire и failsafe генерируются в читаемом человеком виде txt и xml, выходные данные jacoco предназначены для использования инструментами. Например, SonarQube способна интерпретировать эту информацию для создания хорошо оформленных отчетов в формате HTML. Для получения более подробной информации обратитесь к следующему разделу Генерация сайта.
Maven имеет три встроенных жизненных цикла:* clean — для очистки (в действительности просто удаление папки с выходными данными)
site:site
в конце команды Maven../mvnw -Pdistribution,platform-java7,platform-android clean verify site:site
Каждый модуль будет содержать сгенерированную документацию в директории <module>/target/site
.
Сборка Javadoc представляет собой некоторую проблему.
Наша кастомизированная «агрегированная Javadoc» (как видна на сайте) образуется конфигурациями плагина maven-javadoc-plugin
. Как указано в pom, эта конфигурация не влияет на mvn javadoc:aggregate
, а только на mvn site
. Затем, как также указано в pom, возникла проблема при обработке выпуска, поэтому конфигурация aggregate reportSet
была закомментирована. Поэтому создаётся только непеределённая javadoc.
Пока кто-то не выяснит, как решить эту проблему разумным образом, можно использовать следующее:
# Измените pom.xml, чтобы раскомментировать конфигурацию плагина javadoc для агрегированной отчетности
./mvnw install -DskipTests # "package" не достаточно
./mvnw site # В target/site/apidocs будет находиться агрегированная javadoc
Чтобы сгенерировать эту javadoc для выпуска, в клоне, где выполняется выпуск, после выполнения команды release:perform
, перейдите в директорию target/checkout
выпуска и выполните вышеупомянутые команды.
Или создайте новый клон из тэга выпуска (git clone --branch edgent-<вер> https://repo-url tmp-javadoc-clone
) и выполните команды там.Обратите внимание, попытки выполнить вышеупомянутые действия с помощью пакета исходников tar/zip завершаются ошибкой,
потому что mvn site
должен быть запущен в репозитории git.
pom.xml/maven-surefire-plugin
— выполнение юнит-тестовpom.xml/maven-failsafe-plugin
— выполнение интеграционных тестовpom.xml/jacoco-maven-plugin
— отчеты о покрытии кода Jacocopom.xml/animal-sniffer-maven-plugin
— проверка совместимости с Retrolambdapom.xml/org.codehaus.sonar-plugins
— отчеты о качестве кода SonarQubepom.xml/maven-javadoc-plugin
— генерация javadoc и конфигурация всех группирующих контроловpom.xml/apache-rat-plugin
— автоматически запускает Apache RAT (Release Audit Tool) для проверки содержимого. Строительство завершается ошибкой, если проверка проваливается. См. информацию о конфигурации для управления исключенными артефактами.pom.xml/maven-assembly-plugin
— используется в нескольких местах для конфигурирования и создания сборок => пакета исходного кода, пакета распространенияpom.xml/maven-site-plugin
— вещи, связанные с созданием сайта, включая множество интересных вещей, в том числе html-отчеты из различных вышеуказанных компонентов, а также объединённые javadoc. Как это в конечном итоге связано с общественным сайтом, требует дальнейшей проработки.platforms/java7/pom.xml/retrolambda-maven-plugin
и platforms/android/android/pom.xml/retrolambda-maven-plugin
— где активирован Retrolambdapom.xml/maven-remote-resources-plugin
играет роль во всем этомsrc/main/appended-resources
— содержит копии лицензионных текстов для артефактов, упакованных в пакеты Edgent. Для большинства случаев это относится к JAR/WAR-пакету Edgent Console. Эти данные включаются в JAR следующим образом в POM-файле проекта: <resource>
<directory>${project.basedir}/src/main/appended-resources/licenses</directory>
<targetPath>${project.build.directory}/${project.artifactId}-${project.version}/META-INF/licenses</targetPath>
</resource>
* `src/main/ibm-remote-resources` — содержит фрагмент файла NOTICE для проектов, содержащих внесённый IBM код. Подчинённые проекты должны указывать следующее в своём pom для обеспечения правильного включения файла NOTICE в jar-файл проекта:
<properties>
<remote-resources-maven-plugin.remote-resources.dir>src/main/ibm-remote-resources</remote-resources-maven-plugin.remote-resources.dir>
</properties>
``` * `edgent-console-servlets:war` содержит собранное программное обеспечение (скачанное и включённое сборочными средствами). В него включена лицензионная информация собранного программного обеспечения, как указано выше. Её собственные LICENSE и NOTICE копируются из соответствующих файлов в её `src/main/remote-resources/META-INF`. <b>Копии этих файлов находятся в папках платформы Java 7.</b>
* `edgent-console-server:jar` собирает консольные сущности war и поэтому требует такого же подхода к LICENSE/NOTICE/licenses, как и для war-файла. <b>Его LICENSE и NOTICE имеют копии в его `src/main/remote-resources/META-INF`, а также копии этих файлов находятся в папках платформы Java 7.</b>
* пакет исходного кода
* `src/assembly/source-release.xml` — конфигурационная информация, контролирующая названия пакета исходного кода и пакета распространения, включаемые/исключаемые файлы и т. д.
* пакеты распространения:
На каждой платформе существует проект "распространение".
Мы не выпускаем эти пакеты, поэтому они не обязаны строго соответствовать требованиям лицензионных и информационных файлов ASF.
Тем не менее, большую часть этой информации предоставляет автоматически созданный файл DEPENDENCIES в пакете.
<b>Копии этой информации находятся в папках платформ Java 7 и Android.</b>
Похоже, `samples/get-edgent-jars-project` использует ту же схему и имеет свои копии файлов.
* Название пакета наследуется от конфигурационного файла пакета исходного кода, указанного выше.
* `src/assembly/distribution`.xml - дополнительная конфигурационная информация
* src/main/resources/README - источник файла в пакете
* `utils/edgent-deployment-filter-maven-plugin` - плагин для удаления публикации jar-файлов, связанных с тестами, во время выпуска. Видите EDGENT-440.
плагин собирается и выпускается отдельно. ## Тестирование коннектора KafkaТесты коннектора Kafka по умолчанию не выполняются, так как коннектор должен подключаться к запущенному конфигурационному серверу Kafka/Zookeeper.
Похоже, что есть способы встроить Kafka и Zookeeper для целей тестирования, но мы пока этого не сделали. Приветствуются вклады!
Установка серверов проста. Следуйте шагам в документации Javadoc файла [KafkaStreamsTestManual](connectors/kafka/src/test/java/org/apache/edgent/test/connectors/kafka/KafkaStreamsTestManual.java).
Как только Kafka/Zookeeper будут запущены, вы сможете выполнить тесты и примеры:
```sh
#### Выполните тесты Kafka
./mvnw -pl connectors/kafka test '-Dtest=**/*Manual'
# Подсказка: чтобы выполнить только один тестовый случай: '-Dtest=**/KafkaStreamsTestManual#testSimple'
#### Выполните пример
(cd samples; ./mvnw package -DskipTests) # сборка, если ещё не выполнена
cd samples/connectors/scripts/kafka
cat README
./runkafkasample.sh sub
./runkafkasample.sh pub
edgent
. Каждая верхняя директория является проектом и содержит один или более модулей:api
— API для Edgent. В целом строго разделены API и реализации, чтобы позволить множественные реализации одного API, таких как для различных типов устройств или различных подходов.spi
— Общие реализационные коды, которые могут использоваться несколькими реализациями API. Нет необходимости использовать предоставленный spi-код при реализации API.runtime
— Реализации API для выполнения приложений Edgent в режиме реального времени. На начальном этапе предоставляется одна реализация, etiao
— Everything Is An Oplet — микрокерн, который выполняет приложения Edgent, будучи очень простым временем выполнения, где вся функциональность представлена в виде оплетов, объектов выполнения, обрабатывающих потоковые данные. Таким образом, приложение Edgent становится графом соединённых оплетов, а такие элементы, как входящий поток данных или выходящий поток данных, метрики и т. д., реализуются путём включения дополнительных оплетов в граф приложения.providers
— Провайдеры объединяют модули Edgent для возможности создания и запуска приложений Edgent.connectors
— Подключаемые модули к файлам, HTTP, MQTT, Kafka, JDBC и т. д.Подключаемые модули являются модульными, поэтому развернутые приложения должны содержать только те подключаемые модули, которые они используют, например только MQTT. Приложения Edgent, работающие на краю сети, ожидают подключения к системам с обратной связью через некоторую форму центра сообщений, такой как брокер MQTT, Apache Kafka, облачная служба IoT и т. д.apps
— Приложения для использования в среде Интернета вещей.analytics
— Аналитика для использования приложениями Edgent.utils
— Опциональные утилиты для приложений Edgent.console
— Разработочная консоль, которая позволяет визуализировать потоки данных внутри приложения Edgent во время разработки.android
— Код, специфичный для Android.test
— Примеры тестов расположены по адресу https://github.com/apache/incubator-edgent-samples## Кодирование конвенцийМесто для заполнения: см. EDGENT-23
Несколько ключевых пунктов в это время:
rat
, чтобы проверить заголовки лицензий
и завершаются ошибкой, если встречаются несоответствующие файлы.Основной средой разработки Edgent является Java 8, чтобы воспользоваться преимуществами лямбда-выражений, так как основной API Edgent имеет функциональный характер.
Однако, чтобы поддерживать Android (и Java 7), другие возможности Java 8 не используются в основном коде. Лямбды преобразуются в классы, совместимые с Java 7, с помощью retrolambda.Поэтому для основного кода и тестов, которые должны работать на Android/Java7:
В целом большинство кода должно работать на Android (хотя возможно, что ещё нет), за исключением этих исключённых возможностей:
SLF4J используется для логирования и трассировки.
Ищите в коде org.slf4j LoggerFactory
, чтобы увидеть пример его использования.
Код Edgent находится в резидентных git-репозиториях ASF:
https://gitbox.apache.org/repos/asf/incubator-edgent.git
Репозитории зеркалируются на GitHub:
https://github.com/apache/incubator-edgent
Использование обычного рабочего процесса GitHub приносит пользу команде, включая легкий код-ревью, автоматические регрессионные тесты и т.д., как для коммиттеров, так и для участников проекта. Для описания рабочего процесса GitHub см.:
https://guides.github.com/introduction/flow/
https://guides.github.com/activities/hello-world/
```* Создайте форк репозитория incubator-edgent GitHub.
* Клонируйте свой форк, используйте легковесные ветки для задач, и выполняйте коммиты / пуш изменения в ваш форк.
* Описание ветвей полезно. Вы также можете указать ссылку на задачу JIRA, например, *mqtt-ssl-edgent-100* для задачи EDGENT-100.
* Когда будете готовы, создайте запрос на слияние. Коммитеры получат уведомление.
* Включите *EDGENT-XXXX* (задачу JIRA) в название вашего запроса на слияние.
* Для раннего предварительного просмотра / обратной связи создайте запрос на слияние с *[WIP]* в названии. Коммитеры не будут рассматривать его для слияния до удаления *[WIP]*.
Поскольку репозиторий GitHub incubator-edgent является зеркалом репозитория ASF, обычный рабочий процесс слияния на основе GitHub для коммитеров не поддерживается.
Коммитеры могут использовать один из нескольких способов для окончательного слияния запроса на слияние в репозиторий ASF. Один из таких способов описан здесь:
* http://mail-archives.apache.org/mod_mbox/incubator-quarks-dev/201603.mbox/%3C1633289677.553519.1457733763078.JavaMail.yahoo@mail.yahoo.com%3E
Примечания к вышеуказанным направлениям слияния запроса на слияние:
* Используйте URL HTTPS, если вы не настроили ключ SSH на GitHub:
- `$ git remote add mirror https://gitbox.apache.org/repos/asf/incubator-edgent.git`
## Использование Eclipse
Git-репозиторий Edgent или пакет исходного кода содержит
определения проектов Maven для различных компонентов Edgent,
таких как api, runtime, connectors.Как только вы импортировали проекты Maven в свою среду разработки,
построение и тестирование JUnit Edgent в Eclipse используют те же артефакты, что и командная строка Maven. Как и в случае с командной строкой, jar-файлы зависимых проектов автоматически скачиваются в локальный репозиторий Maven и используются.
Если вы хотите использовать Eclipse для клонирования своего форка, используйте плагин Git Team Provider Eclipse. В меню **Файл** выберите **Импорт...**
1. Из папки **Git**, выберите **Проекты из Git** и нажмите **Далее**
2. Выберите **Клонировать URI** для клонирования удаленного репозитория. Нажмите **Далее**.
- В разделе **Локация**, введите URI вашего форка в поле **URI** (например, `git@github.com:<username>/incubator-edgent.git`). Другие поля будут заполнены автоматически. Нажмите **Далее**. Если требуется, введите ваш пароль.
- В окне **Исходный Git-репозиторий**, выберите ветку (обычно **master**) и нажмите **Далее**
- Укажите директорию, где будет храниться локальная копия, и нажмите **Далее**. Репозиторий будет склонирован. Примечание: вы можете сборку и выполнение тестов с помощью Maven в этой директории.
3. В окне **Выберите мастер для импорта проектов**, нажмите **Отмена**. Затем следуйте шагам ниже для импорта Maven-проектов. После клонирования репозитория Git на ваш компьютер или работы с распакованной версией пакета исходного кода, импортируйте Maven проекты в рабочее пространство.1. В меню *Файл* выберите *Импорт...*
2. Из папки *Maven*, выберите *Существующие проекты Maven* и нажмите *Далее*
+ Найдите корневую директорию клонированного репозитория или пакета исходного кода и выберите её. Будут отображены проекты и файлы pom.xml, которые будут автоматически выделены.
+ Убедитесь, что флажок *Добавить проект(ы) в рабочее множество* установлен.
+ Нажмите *Готово*. Eclipse начнёт процесс импорта и сборку рабочего пространства. Будьте терпеливы, это может занять минуту или две.
Основные артефакты, такие как `README.md`, доступны в проекте `edgent-parent`.
Примечание: Конкретные шаги могут отличаться в зависимости от используемой версии Eclipse или плагинов Maven или Git Team Provider.
### Редактор текста Markdown
Заголовки лицензий ALv2 в различных файлах Markdown (например, README.md)
кажется, вызывают проблемы у редактора Eclipse `wikitext`, приводя к тому, что содержимое становится пустым
в его панели предварительного просмотра. Эту ситуацию можно исправить, установив
редактор `Markdown text editor` из маркетплейса Eclipse и настроив соответствующие ассоциации файлов в Eclipse.
## Переименовано с Apache Quarks
Apache Edgent — новое имя, и процесс переименования завершен.
Изменения в коде:
* Префикс пакетов теперь "org.apache.edgent"
* Префикс имени JAR-файлов теперь "edgent"
Пользователям Edgent потребуется обновить свои ссылки на указанные выше префиксы. Рекомендуется создать новое рабочее пространство вместо использования существующего рабочего пространства Quarks.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )