【发布时间】:2010-11-01 17:41:37
【问题描述】:
我想达到什么目的?
我们目前正在开发一个使用 Drupal 的 PHP 项目。
我非常想学习如何为整个项目创建一个One-step build。 最好使用一些新的(对我来说)看起来非常强大的东西:Maven
基本上我想自动化以下过程:
- 从官方CVS repository签出 Drupal。
- 从各自的 CVS 存储库中签出官方的第 3 方模块。
- 从我们的 mercurial 存储库中签出我们的自定义模块。
- 将所有模块复制/移动到 Drupal 中的相应目录。
- 结帐并安装我们的自定义主题。
- 添加自定义 drupal 安装配置文件。
- 创建一个新的 MySQL 数据库架构。
- 如果可能,请自动设置 drupal 数据库连接。
将来我想在 Hudson(或任何其他)继续集成服务器上运行此构建。
为什么选择 Maven? (为什么不是 Ant 或 Phing?)
除了想要学习新东西(我以前用过 Ant)之外,我认为 Maven 的依赖管理可能适用于 drupal 模块。
您是否认为这是使用 Maven 的充分理由,即使 Maven 最初并非用于 PHP 项目?我知道 Ant 最初也不是用于 PHP,但是还有更多的人同时使用 Ant 和 PHP 的例子。
顺便说一句,如果我不能让 Maven 尽快工作,我想我会切换到 Ant。 Ant的程序风格对我来说更容易理解。
到目前为止我有什么?
我有一个使用 SCM 插件的 pom.xml 文件来检查 drupal 源代码。 当我跑步时:
mvn scm:checkout
源代码被检出到一个新目录中:
target/checkout
当我尝试时:
mvn scm:bootstrap
它抱怨未定义安装目标。
这里是 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>
最后,我的问题是什么?
- Maven 是不是这个错误的工具?
如果没有,
- 你会怎么做?
- 我应该使用
scm:bootstrap目标吗? - Maven 在文件系统上移动目录的方式是什么?
- 应该使用
install目标将模块移动到drupal 目录中吗? - 目前我们所有的自定义模块都在一个 mercurial 存储库中。是否可以创建一个 pom.xml 并单独签出每个模块?
- 如有任何一般性建议,我们将不胜感激。
感谢您的宝贵时间!
【问题讨论】:
标签: drupal build maven-2 build-automation drupal-distributions