Pomless Tycho build + плагин релиза maven - PullRequest
1 голос
/ 13 июня 2019

У меня беспомощная сборка Tycho, которую я хочу выпустить с помощью плагина Maven Release.У меня проблема в том, что я получаю ошибки от git-плагинов для сгенерированного .polyglot.build.properties, даже если он не включен в конфигурацию цели git-add.

Parent pom.xml:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
                <localCheckout>true</localCheckout>
                <preparationGoals>
                    org.eclipse.tycho:tycho-versions-plugin:${tycho.version}:update-eclipse-metadata
                    build-helper:parse-version
                    org.apache.maven.plugins:maven-scm-plugin:1.9.5:add
                    org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin
                </preparationGoals>
                <completionGoals>
                    org.eclipse.tycho:tycho-versions-plugin:${tycho.version}:update-eclipse-metadata
                    build-helper:parse-version
                    org.apache.maven.plugins:maven-scm-plugin:1.9.5:add
                    org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin
                </completionGoals>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <version>1.9.5</version>
            <executions>
                <execution>
                    <id>default-cli</id>
                    <goals>
                        <goal>add</goal>
                        <goal>checkin</goal>
                    </goals>
                    <configuration>
                        <includes>**/META-INF/MANIFEST.MF,**/feature.xml,**/*.product,**/category.xml,release.properties</includes>
                        <excludes>**/target/**</excludes>
                        <message>Changing the version to reflect the pom versions for the release</message>
                        <pushChanges>false</pushChanges>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Полученная ошибка:

fatal: pathspec 'my.plugin / .polyglot.build.properties' не соответствует ни одному файлу

Ответы [ 2 ]

2 голосов
/ 19 июня 2019

Изучив исходный код Tycho-Pomless, Polyglot и Maven-Release, я пришел к выводу, что бессонная сборка не может работать с Maven Release. Мне нужно добавить pom.xml

Причина:

  1. tycho-pomless использует полиглот, который создает временный pom из build.properties, который удаляется при выходе из JVM
  2. выпуск maven: подготовка порождает процесс child maven для выполнения целей подготовки. Когда дочерний процесс завершается, это удаляет временные файлы. Доступные значения mavenExecutorId: «invoker», который вызывает новый процесс, и «разветвленный», который разветвляет процесс. Что означает, что оба порождают новую JVM.

Итак, в заключение, похоже, что бессимптомный тихом (или любая сборка полиглота на самом деле) и релиз мавена несовместимы при наличии целей подготовки, и кажется, что обходного пути нет. Возможный обходной путь выполнения целей подготовки в той же JVM, кажется, недоступен. Таким образом, решение заключается в добавлении pom.xml

0 голосов
/ 18 июня 2019

Сначала проверьте, что это похоже на этот вопрос , когда плагин находит файлы, которые должен добавить, но при создании командной строки он не учитывает правильный корневой каталог.

Проверьте, является ли путь, указанный в pathspec 'my.plugin/.polyglot.build.properties', правильным.

Дважды проверьте, находится ли иерархия POM и папок в нужном месте, то есть в корневой папке проекта.

OP kutschkem ссылается в комментариях на:

* .polyglot.build.properties является временным файлом, удаленным при выходе из дочернего процесса release:prepare.
Но плагин релиза выбирает его как pom проекта для регистрации.

Возможно, поэтому я вижу в Tycho / Reproducible Version Qualifiers

       <jgit.ignore>
         pom.xml
         .polyglot.build.properties
       </jgit.ignore>
...