Использование дополнений maven и Tycho p2 для создания зеркального хранилища и добавления динамически новых хранилищ и пользовательского интерфейса
Я пытаюсь создать зеркальный репозиторий, чтобы не зависеть от внешних репозиториев в сети. Я знаю, что с помощью Tycho Extras действительно легко отразить репозиторий, но я планирую открыть веб-страницу, где вы сможете добавить новый репозиторий / репозитории и их iu / ius. Я действительно застрял, думая, как отправить все эти параметры (URL репозиториев и IUS), чтобы добраться до внутреннего сервера (размещенного в бамбуке) и сделать pom, используя базовый шаблон и добавив информацию, предоставленную пользователем, а затем использовать Maven, чтобы сделать реальное хранилище p2. Основная цель - сделать его воспроизводимым и тестируемым. Я открыт для предложений или идей.
Вот это pom.xml
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-p2-extras-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>mirror</goal>
</goals>
</execution>
</executions>
<configuration>
<source>
<!-- source repositories to mirror from -->
<repository>
<url>${repository.url}</url>
<layout>${repository.layout}</layout>
<!-- supported layouts are "p2-metadata", "p2-artifacts", and "p2" (for joint repositories; default) -->
</repository>
</source>
<!-- starting from here all configuration parameters are optional -->
<!-- they are only shown here with default values for documentation purpose -->
<!-- List of IUs to mirror. If omitted, allIUs will be mirrored. -->
<!-- Omitted IU version element means latest version of the IU -->
<!-- The destination directory to mirror to. -->
<destination>${project.build.directory}/repository</destination>
<!-- Whether only strict dependencies should be followed. -->
<!-- "strict" means perfect version match -->
<followStrictOnly>false</followStrictOnly>
<!-- Whether or not to follow optional requirements. -->
<includeOptional>true</includeOptional>
<!-- Whether or not to follow non-greedy requirements. -->
<includeNonGreedy>true</includeNonGreedy>
<!-- Filter properties. E.g. filter only one platform -->
<!-- Whether to filter the resulting set of IUs to only -->
<!-- include the latest version of each IU -->
<latestVersionOnly>false</latestVersionOnly>
<!-- don't mirror artifacts, only metadata -->
<mirrorMetadataOnly>false</mirrorMetadataOnly>
<!-- whether to compress the content.xml/artifacts.xml -->
<compress>true</compress>
<!-- whether to append to the target repository content -->
<append>true</append>
<!-- whether to mirror pack200 artifacts also. Available since tycho-extras 0.17.0 -->
<includePacked>true</includePacked>
</configuration>
</plugin>
</plugins>
Проблема в том, что я могу передать по параметру репозиторий и макет, но только один репозиторий и один макет, и ни одного ius. Мне нужно параметризовать это, чтобы я мог добавить несколько репозиториев, макетов и пользовательского интерфейса. Это должно быть повторяемым для автоматизации сервера сборки.
Заранее спасибо. Мартин
1 ответ
Невозможно внедрить фрагменты XML POM через свойства командной строки, поэтому при вашем текущем подходе вы фактически не выйдете за пределы одного репозитория и одного IU.
Но, учитывая, что вы все равно хотите запускать эту сборку Maven только на сервере, вы можете просто сгенерировать pom.xml перед началом сборки.