Выпуск Maven: выполнение без развертывания и вызова внешнего сценария оболочки - PullRequest
18 голосов
/ 10 августа 2010

Я использую плагин Maven Release. Проблема проста: я не хочу делать развертывание при выпуске: выполнить. Я действительно хочу выполнить сценарий оболочки, который будет выполнять развертывание для меня. Итак, мне нужно выполнить две вещи:

  1. Каким-то образом отключите стандартную цель "развертывания" из выпуска: выполните

  2. Как-то сделать make release: выполнить вызов плагина exec: exec для выполнения сценария оболочки

Вот мой помп:

<plugin>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.0</version>
    <configuration>
        <tagBase>svn://saoj-la.dyndns.org/webapp-test/tags</tagBase>
        <connectionUrl>scm:svn:svn://saoj-la.dyndns.org/webapp-test/trunk</connectionUrl>
    </configuration>
</plugin>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <executable>/bin/sh</executable>
        <arguments>
            <argument>run.sh</argument>
        </arguments>
    </configuration>
</plugin>

Ответы [ 2 ]

37 голосов
/ 22 апреля 2014

Немного поздно, но для справки:

Для вашего шага 1 вы можете отключить шаг развертывания maven, используя опцию «пропустить».Нажмите здесь для справки.

В командной строке вы можете вызвать что-то вроде:

mvn release:perform -Darguments="-Dmaven.deploy.skip=true"
8 голосов
/ 10 августа 2010

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

Я должен что-то упустить, потому что когда я читаю это, я не вижу смысла сценария ... Но давайте просто скажем, что я не понимаю.

Каким-то образом отключите стандартную цель "развертывания" из выпуска: выполните

В соответствии с документацией release:perform вы можете использовать необязательный параметр goals, чтобы указать:

Список разделенных пробелами целей, которые нужно выполнить при развертывании. Значением по умолчанию является deploy или deploy site-deploy, если в проекте есть элемент <distributionManagement>/<site>.

Возможно, вы могли бы использовать install вместо deploy.

Каким-то образом make release: выполнить вызов плагина exec: exec для выполнения сценария оболочки

Свяжите это с install в профиле, активированном во время выпуска. Вот один из способов сделать это:

<profile>
  <!-- Profile used when the release plugin executes. -->
  <id>release</id>
  <activation>
    <property>
      <!-- This property is automatically defined by the Maven release plugin when executing
           a release. Thus this profile will be automatically enabled when releasing -->
      <name>performRelease</name>
      <value>true</value>
    </property>
  </activation>
  <build>
    ...
  </build>
</profile>

Но, честно говоря, в вашей просьбе есть что-то странное. Может быть, предоставление более подробной информации поможет.

...