Как настроить maven-release для использования Perforce в качестве поставщика SCM?

Я пытаюсь использовать плагин выпуска maven для создания выпущенной версии проекта Java с Perforce в качестве SCM.

Мой раздел pom scm:

<scm>
  <connection>scm:p4:myperforcehostname:1666://mydepot/mycomponent</connection>
  <developerConnection>scm:p4:myperforcehostname:1666://mydepot/mycomponent</developerConnection>
  <url>http://myperforcehostname:1666</url>
</scm>

Также я использую плагин P4Maven и плагин Maven Release:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-scm-plugin</artifactId>
  <version>1.4</version>
  <dependencies>
    <dependency>
      <groupId>com.perforce</groupId>
      <artifactId>p4maven</artifactId>
      <version>[2011,2012)</version>
    </dependency>
  </dependencies>
  <configuration>
    <connectionType>connection</connectionType>
    <username>myusernme</username>
    <password>mypassword</password>
    <includes>**</includes>
  </configuration>
</plugin>        
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.5</version>
</plugin>

При вызове mvn release: prepare -DdryRun = true я получаю

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5:prepare 
(default-cli) on project mycomponent: The provider given in the SCM URL could not be found: 
No such provider: 'p4'. -> [Help 1]

Любые идеи?

Я могу позвонить mvn scm:checkout.


person schoenk    schedule 02.04.2014    source источник
comment
Однако он работает с scm:perforce вместо scm:p4. По крайней мере, если у меня установлен клиент командной строки p4. Может, я что-то не так понял: для чего нужен плагин p4maven? Мне это не нужно, если я использую scm:perforce, не так ли?   -  person schoenk    schedule 02.04.2014
comment
Также я понял, что scm:checkout - это не то же самое, что Получить последнюю версию в P4V. Он просто скопировал все файлы в папку target. Есть ли хороший учебник по использованию Maven с Perforce?   -  person schoenk    schedule 02.04.2014
comment
При использовании поставщика SCM perforce scm:checkout просто копирует файлы. Если вам нужна правильная синхронизация Perforce, вам необходимо использовать P4Maven вместе с поставщиком SCM p4.   -  person schoenk    schedule 03.04.2014


Ответы (3)


Вам нужно добавить p4maven как зависимость к maven-scm-plugin, а также к maven-release-plugin.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-scm-plugin</artifactId>
  <version>1.4</version>
  <dependencies>
    <dependency>
      <groupId>com.perforce</groupId>
      <artifactId>p4maven</artifactId>
      <version>[2011,2012)</version>
    </dependency>
  </dependencies>
  <configuration>
    <connectionType>connection</connectionType>
    <username>username</username>
    <password>password</password>
    <includes>**</includes>
  </configuration>
</plugin>        
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.5</version>
  <dependencies>
    <!-- P4Maven -->
    <dependency>
      <groupId>com.perforce</groupId>
      <artifactId>p4maven</artifactId>
      <version>[2011,2012)</version>
    </dependency>
  </dependencies>
  <configuration>
    <connectionType>connection</connectionType>
    <username>username</username>
    <password>password</password>
    <includes>**</includes>
  </configuration>
</plugin>
person schoenk    schedule 03.04.2014

Оказалось, что P4Maven выходит не из коробки. Мне пришлось загрузить его со страниц Perforce и установить в свой репозиторий (следуя инструкциям в загружаемом zip-файле). После этого я смог успешно использовать p4 в качестве поставщика SCM.

person schoenk    schedule 03.04.2014
comment
Я ожидал, что Maven загрузит плагин P4Maven из одного из своих удаленных репозиториев. Возможно, вы неправильно их настроили? - person Peter Wippermann; 21.09.2017

Вот я недавно сделал:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <version>1.9.4</version>
            <dependencies>
                <dependency>
                    <groupId>com.perforce.p4maven</groupId>
                    <artifactId>p4maven-provider</artifactId>
                    <version>1.0.6</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <dependencies>
                <dependency>
                    <groupId>com.perforce.p4maven</groupId>
                    <artifactId>p4maven-provider</artifactId>
                    <version>1.0.6</version>
                </dependency>
            </dependencies>
        </plugin>

А потом несколько полезных команд:

mvn scm:changelog -Dusername=yourP4user -Dpassword=yourP4pwd
release:prepare -Dusername=yourP4user -Dpassword=yourP4pwd -autoVersionSubmodules=true -DignoreSnapshots=true
person Sergey Ponomarev    schedule 01.02.2016