使用Maven设置Drupal PHP项目

Hei*_*ter 7 build-automation maven-2 drupal build drupal-distributions

我想要实现什么?

我们目前正在开发一个使用Drupal的PHP项目.

我非常想学习如何为整个项目创建一步构建.最好使用一些看似非常强大的新东西(对我来说):Maven

基本上我想自动化以下过程:

  1. 从官方CVS存储库中检出Drupal .
  2. 从各自的CVS存储库中查看官方第三方模块.
  3. 从我们的mercurial存储库中查看我们的自定义模块.
  4. 将所有模块复制/移动到Drupal中的相应目录.
  5. 签出并安装我们的自定义主题.
  6. 添加自定义drupal安装配置文件.
  7. 创建一个新的MySQL数据库模式.
  8. 如果可能,自动执行drupal db连接设置.

在将来,我想在Hudson(或任何其他)继续集成服务器上运行此构建.

为什么选择Maven?(为什么不是Ant或Phing?)

除了学习新东西的愿望(我以前使用过Ant)之外,我认为Maven的依赖管理可能对drupal模块有效.

您是否认为这是使用Maven的充分理由,即使Maven最初并非用于PHP项目?我知道Ant最初也不是用于PHP的,但是有更多的人一起使用Ant和PHP的例子.

顺便说一下,如果我不能让Maven尽快工作,我想我会切换到Ant.Ant的程序风格让我更容易理解.

到目前为止我有什么?

我有一个使用SCM插件的pom.xml文件来检查drupal源代码.当我跑:

mvn scm:checkout
Run Code Online (Sandbox Code Playgroud)

将源签出到新目录中:

target/checkout
Run Code Online (Sandbox Code Playgroud)

当我尝试:

mvn scm:bootstrap
Run Code Online (Sandbox Code Playgroud)

它抱怨没有定义安装目标.

这是pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>drupal</artifactId>
  <version>1.0</version>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>1.1</version>
          <configuration>
            <username>anonymous</username>
            <password>anonymous</password>
          </configuration>
      </plugin>
    </plugins>
  </build>
  <scm>
    <connection>scm:cvs:pserver:cvs.drupal.org:/cvs/drupal:drupal</connection>
    <developerConnection>scm:cvs:pserver:cvs.drupal.org:/cvs/drupal:drupal</developerConnection>
    <tag>DRUPAL-6-12</tag>
    <url>http://cvs.drupal.org/viewvc.py/drupal/drupal/?pathrev=DRUPAL-6</url>
  </scm>
</project>
Run Code Online (Sandbox Code Playgroud)

最后,我的问题是什么?

  • Maven是错误的工具吗?

如果不,

  • 你会怎么做?
  • 这是scm:bootstrap我应该使用的目标吗?
  • 什么是在文件系统上移动目录的Maven方式?
  • 是否应该使用install目标将模块移动到drupal目录中?
  • 目前,我们所有的自定义模块都在一个mercurial存储库中.是否可以创建一个pom.xml并单独检出每个模块?
  • 任何一般建议将不胜感激.

谢谢你的时间!

小智 5

我98%确定你真正需要的是Drush Make,它可以递归地构建Drupal项目,只要它们提供列出其依赖项的自己的.make文件.它可以从多个SCM,Web,补丁文件下载,您可以控制它们下载的位置.它还支持外部库,例如wysiwyg,PHP文件或JS库.

请参阅Open Atrium make文件以获取其可以执行的操作的示例.


vic*_*ugo 4

肯定你没有使用 Maven,这里有一些想法:

  • Maven 是一个 Java 构建工具和依赖管理软件,具有明确定义的生命周期,如下所示:验证、编译、测试、打包、集成测试、验证、安装、部署。您使用的是 scm 插件,它可以坚持此处定义的任何阶段并执行一些操作,但除非您在 POM 中进行复杂的更改(我没有听说有人这样做),否则生命周期将继续执行。
  • Maven 还被设计用来打包 JAR、WAR,并使用一些插件 EAR、SAR、RAR(不是RAR)和其他一些文件;您可能需要编写一个新插件来获取您期望的包类型,或者使用程序集插件,这将使事情变得更加复杂。

由于前面的几点,Maven 没有命令将文件移动到特定目录(不是本机目录),并且您不应该调用安装阶段将文件复制到本地存储库之外的任何其他位置。你所做的就像把一台洗衣机改造成搅拌机

在阅读了您想要对项目执行的操作后,我建议您创建一个脚本(shell 脚本或批处理脚本,具体取决于您的操作系统)来完成这项工作。SVN 和 CVS 具有可以从构建脚本内部调用的命令行工具。我想您选择 Maven 的原因之一是,Hudson 和许多其他持续集成软件与它很好地集成,但您也可以将它们与脚本一起使用。

如果您习惯使用 Ant,并且认为使用它会缩短应用程序的构建时间,我认为还不错;)(除 Java 项目外,我没有将 Ant 用于其他目的)