2016-04-01 5 views
1

Я новичок в Maven и имею проблему, когда я пытаюсь автоматически изменить цель плагина SCM с checkout на обновление на основе того, был ли источник уже извлечен.Как запустить плагин Maven SCM для автоматического переключения целей на основе существующего каталога?

Может ли кто-нибудь показать мне пример кода, чтобы заставить это работать? Это конфигурация плагина:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.9.4</version> 
     <executions> 
      <execution> 
       <phase>generate-sources</phase> 
       <goals> 
        <goal>checkout</goal> 
       </goals> 
       <configuration> 
        <connectionType>developerConnection</connectionType> 
        <scmVersion>master</scmVersion> 
        <scmVersionType>branch</scmVersionType> 
        <checkoutDirectory>${project.basedir}/src</checkoutDirectory> 
        <workingDirectory>${project.basedir}/src</workingDirectory> 
       </configuration> 
      </execution> 
     </executions> 
</plugin> 

ответ

0

изменение goal:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.9.4</version> 
     <executions> 
      <execution> 
       <phase>generate-sources</phase> 
       <goals> 
        <goal>update</goal> 
       </goals> 
       <configuration> 
        <connectionType>developerConnection</connectionType> 
        <scmVersion>master</scmVersion> 
        <scmVersionType>branch</scmVersionType> 
        <checkoutDirectory>${project.basedir}/src</checkoutDirectory> 
        <workingDirectory>${project.basedir}/src</workingDirectory> 
       </configuration> 
      </execution> 
     </executions> 
</plugin> 

Ссылка
https://maven.apache.org/scm/maven-scm-plugin/
https://maven.apache.org/scm/maven-scm-plugin/update-mojo.html

+0

Благодаря делать, обновление не выполняется, если проект не бутстрапированное использования проверки. Как это автоматически переключается между проверкой и обновлением в зависимости от того, завершена ли проверка? Я уточнил этот вопрос. – garyM

+0

Эта ссылка может быть полезной для вас: https://maven.apache.org/scm/maven-scm-plugin/examples/bootstrapping-with-pom.html –

+0

Спасибо, я хотел переключиться автоматически. Я отредактировал вопрос, чтобы уточнить – garyM

0

Для изменения цели плагин SCM был вдохновлен DJO NHU Vý (выше).

подход был

  1. Поместите цель в свойство scm.goal установить значение по умолчанию т.е. обновление.
  2. Используйте профиль (bootstrap), чтобы изменить значение свойства scm.goal от 'update' to 'checkout'.
  3. Активируйте профиль начальной загрузки на основе отсутствующего файла .gitignore.
  4. Место недвижимости scm.goal в плагине SCM элемент цели.

Код:

<properties> 
     <scm.dest.path>${project.basedir}/src</scm.dest.path> 
     <scm.goal>update</scm.goal> 
    </properties> 

    <profiles> 
     <profile> 
      <id>bootstrap</id> 
      <activation> 
       <file> 
        <missing>./src/.gitignore</missing> 
       </file> 
      </activation> 
      <properties> 
       <scm.goal>checkout</scm.goal> 
      </properties> 
     </profile> 
    </profiles> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-scm-plugin</artifactId> 
       <version>1.9.4</version> 
       <executions> 
        <execution> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>${scm.goal}</goal> 
         </goals> 
         <configuration> 
          <connectionType>developerConnection</connectionType> 
          <scmVersion>master</scmVersion> 
          <scmVersionType>branch</scmVersionType> 
          <checkoutDirectory>${scm.dest.path}</checkoutDirectory> 
          <workingDirectory>${scm.dest.path}</workingDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
...