Использование дополнений 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 перед началом сборки.

Другие вопросы по тегам