Maven: разные конфигурации для разных целей - PullRequest
4 голосов
/ 24 февраля 2012

Мне бы хотелось иметь разные параметры конфигурации для разных целей плагина релиза Maven. История выглядит так:

Я использую Git для SCM. Я хочу выпуск: подготовить плагин, чтобы делать все локально, а выпуск: выполнить, чтобы отправить все изменения сразу в удаленный репозиторий.

Я пытался сделать что-то вроде этого:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.2.2</version>
    <executions>
        <execution>
            <id>release-prepare</id>
            <configuration>
                <pushChanges>false</pushChanges>
            </configuration>
            <goals>
                <goal>prepare</goal>
            </goals>
        </execution>
        <execution>
            <id>release-perform</id>
            <configuration>
                <localCheckout>true</localCheckout>
                <pushChanges>true</pushChanges>
            </configuration>
            <goals>
                <goal>perform</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <version>1.7-SNAPSHOT</version>
        </dependency>
    </dependencies>
</plugin>

Требуется версия 1.7-SNAPSHOT, чтобы localCheckout = true работал вообще (http://jira.codehaus.org/browse/SCM-662), если кому-то это интересно.

При вышеупомянутых настройках все параметры конфигурации полностью игнорируются, но когда я просто задаю параметры, подобные этим:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.2.2</version>
    <configuration>
        <localCheckout>true</localCheckout>
        <pushChanges>false</pushChanges>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <version>1.7-SNAPSHOT</version>
        </dependency>
    </dependencies>
</plugin>

они применимы как к освобождению, так и к подготовке: выполни, что не является желаемым результатом.

Редактировать

Чтобы прояснить ситуацию: пока мы используем Git для SCM, нам бы хотелось, чтобы все операции, ведущие к подготовке локального релиза, были не без причины, если принять во внимание, что локальный репозиторий Git является В любом случае полноценное репо. Однако когда мы делаем реальную версию, мы хотим, чтобы все изменения были перенесены в репозиторий upstream, чтобы все было правильно установлено.

Может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

В случае, если вам нужно изменить это, вы должны изменить причину релизного плагина во время релиза: выполнить (цель!) Плагин релиза извлечет состояние проекта с тегами и вызвать на нем жизненный цикл развертывания. Так что это не сработает.

EDIT: Я проверил это с Git-проектом и сделал релиз на нем, и это, как я объяснил. Во время выпуска: подготовить цель изменения будут перенесены в удаленный репозиторий. Во время выпуска: выполнить цель Ничто не будет отправлено в удаленный репозиторий, только клон будет сделан для извлечения отмеченной версии.

0 голосов
/ 24 февраля 2012

Сначала я должен сказать, что во время выпуска : подготовьте цель все изменения будут внесены в SCM, а не в выпуск: выполните цель.Поэтому вопрос в том, почему мы хотели бы сделать это таким сложным (не maven) способом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...