将Perforce scm配置为maven项目以获取最新的更改列表

Gur*_*van 6 perforce maven maven-scm-plugin

我正在将项目迁移到Maven,因为我们习惯于通过Perforce SCM存储库中的最新更改编号引用我们的构建,我希望能够提取此信息

我试图通过以下资源配置Maven scm插件:

首先,我不明白如何使它工作,所以如果有人有一个完整的例子,我会很高兴,在我这边我尝试添加我的pom:

<scm>
    <connection>
        scm:perforce:localhost:1666://depot/
        <my_project>
            /
            <version>
    </connection>
    <developerConnection>
        scm:perforce:localhost:1666:/depot/
        <my_project>
            /
            <version>
    </developerConnection>
    <url>http://somerepository.com/view.cvs</url>
</scm>
...
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-plugin</artifactId>
        <version>1.6</version>
        <dependencies>
            <!-- P4Maven -->
            <dependency>
                <groupId>com.perforce</groupId>
                <artifactId>p4maven</artifactId>
                <version>[2011,2012)</version>
            </dependency>
        </dependencies>
        <configuration>
            <connectionType>//depot/proto/kernel/kernel/04.00/maven2</connectionType>
            <username>my local username</username>
            <password>xxxxxx</password>
            <includes>**</includes>
        </configuration>
    </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

这导致我:

[INFO] --- maven-scm-plugin:1.6:checkout (default-cli) @ kernel ---
mars 27, 2012 9:54:08 AM org.sonatype.guice.bean.reflect.Logs$JULSink warn
Avertissement: Error injecting: org.apache.maven.scm.provider.svn.svnexe.SvnExeScmProvider
java.lang.NoClassDefFoundError: org/apache/maven/scm/command/info/InfoScmResult
Run Code Online (Sandbox Code Playgroud)

肯定忘了什么,我会再次阅读说明,看看我想念的,但是如果有人知道的话......

无论如何,我的问题是:是否值得尝试?我没有在scm插件的可用操作中看到任何可以帮助我获取最后更改信息并将其集成到引用构建号中的内容.我应该为此开发自己的插件吗?

提前致谢.

ran*_*sco 2

我从一位 P4Maven 开发人员那里得到了一些可能有帮助的建议。

首先,检查您的配置。“”标签中的“...”应该是“”标签中的标签名称之一(即“connection”或“developerConnection”)

将 Maven 与 Perforce SCM 结合使用有两种选择。

  1. 使用默认(内置)Maven Perforce SCM 提供程序(基于 p4 命令行)

    • 请注意,您需要安装 p4 命令行可执行文件
    • 您可以使用环境变量或 JVM args 设置用户名和密码

[环境变量] P4CLIENT= P4USER= P4PASSWD=

或者

[JVM 参数] -Dusername= -Dpassword=

[pom.xml] ...

  ...

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-scm-plugin</artifactId>
    <version>1.4</version>
  </plugin>

  ...
Run Code Online (Sandbox Code Playgroud)

...

 <!-- SCM Settings -->
  <scm>
    <connection>scmerforce:localhost:1666://depot/someproject</connection>
    <developerConnection>scmerforce:localhost:1666://depot/someproject</developerConnection>
    <url>scmerforce://depot/simple</url>
  </scm>
Run Code Online (Sandbox Code Playgroud)

...

  1. 使用 P4Maven Perforce SCM 提供程序(基于 P4Java)

[pom.xml]

...

  ...

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

  ...
Run Code Online (Sandbox Code Playgroud)

...

scm4:localhost:1666://depot/someproject scm4:localhost:1666://depot/someproject scm4://depot/someproject

...

  • 请注意,对于 P4Maven,我们将覆盖“maven-scm-plugin”插件内的默认提供程序。

  • 请注意,我们使用“scmp4”(如果使用 P4Maven)而不是“scmperforce”(内置默认值)作为提供程序名称,因为现有默认实现采用“perforce”。