8

何を達成したいですか?

現在、 Drupalを使用するPHPプロジェクトに取り組んでいます。

プロジェクト全体のワンステップビルドを作成する方法を必死に学びたいです。できれば、非常に強力に見える(私にとって)新しいものを使用することによって:Maven

基本的に、次のプロセスを自動化したいです。

  1. 公式CVSリポジトリからDrupalをチェックアウトします。
  2. それぞれのCVSリポジトリから公式のサードパーティモジュールをチェックアウトします。
  3. Mercurialリポジトリからカスタムモジュールをチェックアウトします。
  4. すべてのモジュールをDrupal内の適切なディレクトリにコピー/移動します。
  5. カスタムテーマをチェックアウトしてインストールします。
  6. カスタムdrupalインストールプロファイルを追加します。
  7. 新しいMySQLデータベーススキーマを作成します。
  8. 可能であれば、drupaldb接続のセットアップを自動化します。

将来的には、このビルドをHudson(またはその他の)継続的インテグレーションサーバーで実行したいと思います。

なぜMavenなのか?(なぜAntやPhingではないのですか?)

何か新しいことを学びたいという願望(私は以前にAntを使用したことがあります)以外に、Mavenの依存関係管理はdrupalモジュールでうまく機能するかもしれないと思います。

MavenはもともとPHPプロジェクトを対象としていませんでしたが、これがMavenを使用する十分な理由だと思いますか?Antが元々PHPにも使用されていなかったことは知っていますが、AntとPHPを一緒に使用している人の例ははるかに多くあります。

ところで、Mavenをすぐに動作させることができない場合は、Antに切り替えると思います。Antの手続き型は、私にとって理解しやすいものです。

これまでに何がありますか?

DrupalソースをチェックアウトするためにSCMプラグインを使用するpom.xmlファイルがあります。私が走るとき:

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ディレクトリに移動するためにゴールを使用する必要がありますか?
  • 現在、すべてのカスタムモジュールは1つのMercurialリポジトリにあります。pom.xmlを作成し、各モジュールを個別にチェックアウトすることは可能ですか?
  • 一般的なアドバイスをいただければ幸いです。

御時間ありがとうございます!

4

5 に答える 5

5

本当に必要なのはDrushMakeであり、依存関係をリストした独自の.makeファイルを提供していれば、Drupalプロジェクトを再帰的にビルドできると98%確信しています。複数のSCM、Web、パッチファイルからダウンロードでき、ダウンロード先を制御できます。また、wysiwyg、PHPファイル、JSライブラリなどの外部ライブラリもサポートしています。

何ができるかのサンプルについては、OpenAtriumのmakeファイルを参照してください。

于 2010-05-11T21:14:19.317 に答える
4

間違いなくあなたはMavenを使用していません、ここにいくつかの考えがあります:

  • Mavenは、検証、コンパイル、テスト、パッケージ化、統合テスト、検証、インストール、デプロイのような明確なライフサイクルを備えたJavaビルドツールおよび依存関係管理ソフトウェアです。使用しているのはscmプラグインで、ここで定義されているフェーズのいずれかに固執していくつかのアクションを実行できますが、POMに複雑な変更を加えない限り(これを行う人のことは聞いたことがありません)、ライフサイクルは実行され続けます。
  • Mavenは、JAR、WARをパッケージ化し、いくつかのプラグインEAR、SAR、RAR(RARではないおよびその他のファイルを使用してパッケージ化するようにも設計されています。期待するタイプのパッケージを取得するために新しいプラグインをプログラムするか、アセンブリプラグインを使用する必要がある場合があります。これにより、処理がより複雑になります。

前のポイントのため、Mavenがファイルを特定のディレクトリ(ネイティブディレクトリではない)に移動するコマンドはありません。インストールフェーズを呼び出して、ファイルをローカルリポジトリ以外の場所にコピーしないでください。あなたがしていることは、洗濯機を取り、それをブレンダーに変換するようなものです。

プロジェクトで何をしたいのかを読んだ後、その仕事をするためのスクリプト(OSに応じてシェルスクリプトまたはバッチスクリプト)を作成することをお勧めします。SVNとCVSには、ビルドスクリプト内から呼び出すことができるコマンドラインツールがあります。Hudsonや他の多くの継続的インテグレーションソフトウェアはMavenと十分に統合されていますが、スクリプトでも使用できるため、Mavenを選択したと思います。

Antの使用に慣れていて、それを使用することでアプリの構築時間が短縮されることを検討している場合は、それほど悪くはないと思います;)(Javaプロジェクト以外の目的でAntを使用したことはありません)

于 2009-06-10T08:37:08.733 に答える
2

Drushの「モジュール」は、Drupalでスクリプトを作成するための優れたツールです。しかし、それを超えて、「ビルド」ごとにCVSチェックアウトを行うというあなたのアプローチは少しベースから外れていると思います-プロジェクトのすべてのチャンクを別々のリポジトリに置くという本当に正当な理由がない限り、最善の策はDrupalコアとプロジェクトのリポジトリにコミットされた貢献モジュールのチェックアウトを修正しました。これにより、ネットワーク接続への依存性と外部サーバーの安定性が失われるだけでなく、提供されたモジュールをローカルで変更できるようになります(残念ながら、これはおそらくどこかで行われることになります)。

複数のリポジトリからチェックアウトを行う要件を取り除くと、タスクがはるかに簡単になり、MySQLを簡単に操作してsettings.phpを書き出すことができるようになります。

于 2009-06-10T18:10:09.903 に答える
2

プロジェクトhttp://www.php-maven.orgは、phpワールドをmaven(またはphpプロジェクトの場合はmavenワールド)にできるビルドプラグインが付属していることを知っています。バージョン2のスナップショットは、Googleグループにあります(ニューススレッドはhttps://groups.google.com/group/maven-for-php/t/e055e49c89ccb8c5?hl=deで入手できます)。

ただし、これによりプロジェクトを完全に制御でき、デフォルトのMavenライフサイクルが尊重されるため、Mavenは次のコマンドを実行します。

  • mvn clean
  • mvnパッケージ
  • mvnデプロイ
  • mvnサイト

正しく動作します。

Drupalのサポートは、フレームワーク(zend、flow3 ...)とプロジェクトタイプ(web、cli、libs ...)に焦点を当てたバージョン2.1で有効になる可能性があります。Mavenが何であるか、そしてそれがphp開発中にどのように役立つかを明確にすることは非常に重要です。Vistor Hugoが初期のコメントで述べたように、Mavenの利点は、特定のコマンドを手動で実行するだけでなく、プロジェクト構造全体とプロジェクトライフサイクル全体をMavenを介して埋め込むことです。ほとんどのphpの人はまだJava、特にMavenに連絡していないので、チュートリアルを作成して、誰もがMavenの世界にかなり簡単にエントリーできるようにしています。

于 2011-11-12T13:05:09.713 に答える
1

私はMavenが大好きですが、前述のようにJava固有のものだと思います。

私はphingで繰り返し可能なタスクを処理することに成功しました。Zendプロジェクトでビルドを準備するため、または通常の反復可能なタスクを高速化するために使用しました(たとえば、dbのクリーンアップ、dbダンプのロード)。

Phingは、Mavenとしての完全なライフサイクル管理を提供しませんが、手書きで自分自身を書くことはできます。シェルスクリプトコマンドをbuild.xmlに埋め込んで、通常のシェルスクリプトで使用するすべてのものを使用できるようにすることができます。依存するターゲットを処理できるため、通常のシェルスクリプトよりもphingを使用します。したがって、build.xmlに相互に依存する適切に設計されたターゲットが含まれている場合、指定された目標を達成するための非常に便利なチェーンが得られます。

わたしにはできる。

drupalのもう1つの優れたツールは、drupalの管理をスクリプト化できるdrushです。コンソールからDrupal固有のことをたくさん行うことができます。phingスクリプトからdrushコマンドを呼び出すことができると思います。

于 2011-09-29T14:21:13.453 に答える