2011-10-18 10 views
2

私はPHPプロジェクトを作成しています。私は2つのバージョンを配布したいと思っています:無料のものとプロのものがあります。Antでファイルを除外

拡張機能はすべていくつかのファイルに含まれているため、無料版を作成するためにそれらを「スキップする」必要があります。
私の質問です:これを達成する最も良い方法は何ですか?私が使用して考えた
...私は広告これらのファイル意志リストを更新するのを忘れ、さらに場合、

を私は(彼らは最大で20です)build.xmlファイル内のすべてのファイルを一覧表示することができますが、それはかなり醜いですcontainsキーワードがありますが、ビルドが遅くなりますか?

EDIT
これは私のbuild.xmlファイルです:

<project name="MyProject" default="build" basedir="."> 
<property name="buildDir" value="${basedir}/build"/> 
<property name="componente" value="${basedir}/trunk/componente"/> 
<property name="backend" value="${componente}/backend"/> 
<property name="frontend" value="${componente}/frontend"/> 

<target name="build" depends="cleanup, pro, free" /> 

<!-- Clean up the build directory output --> 
<target name="cleanup"> 
    <echo>Clean up build directory</echo> 
    <delete includeemptydirs="true"> 
     <fileset dir="${buildDir}" includes="**/*"/> 
    </delete> 
</target> 

<!-- Create the pro package (no file exclusion) --> 
<target name="pro"> 
    <echo>Build pro version</echo> 
    <zip destfile="${buildDir}/pro.zip" basedir="${componente}" /> 
</target> 

<!-- Create the free package (file exclusion) --> 
<target name="free"> 
    <echo>Build free version</echo> 
</target> 

EDIT 2 マイプロファイルが別のフォルダにあり、i「は以来、私はそれらを移動することはできませんMVCパターンを使用しています

+0

試しましたか?それは動作しましたか?あなたのビルドを遅くしましたか? – hakre

答えて

0

私はそれを見つけました。 私は自分のファイルを除外したPHPDocにタグを追加しました:
@category ProPackage

その後、私は私のbuild.xml

<target name="free"> 
    <zip destfile="${buildDir}/pro.zip"> 
     <fileset dir="${componente}"> 
      <not> 
       <containsregexp expression="@category[ \t]+ProPackage"/> 
      </not> 
     </fileset> 
    </zip> 
</target> 

にこれらのルールを追加し、それが行われています!

0

ファイルセットを使用することができます:

もちろん

http://ant.apache.org/manual/Types/fileset.html

<fileset dir="${files.directory}" casesensitive="yes"> 
    <include name="**/*free.php"/> 
    <exclude name="**/*pro.php"/> 
</fileset> 

あなたには、/除外要素で別の名前を提供する必要があります。理想的には、プロのものを別のファイルに分け、単にディレクトリ全体を除外することができます。

+0

私は知っていますが、私のファイルが同じディレクトリになく、私は物事を忘れる傾向があるので、かなりエラーがあります。P – tampe125

+0

@ tampe125あなたは物事を整理する必要があります。これは、ファイルを除外/インクルードするためのデフォルトのant機構です。ファイル内容や変更日などの他の基準を使用することもできますが、最終的にはこのタスクを使用する必要があります。 – FailedDev

+0

はい、私はMVCパターンを使用していますので、物事はいくつかのフォルダに分割されています。 – tampe125

1

Ant Manualを引用:

ジップタスクは暗黙のファイルセットを作成し、<fileset>のほとんどの属性(dirはbasedirになります)だけでなく、ネストされた<include><exclude><patternset>要素をサポートしています。あなたは2つの私のプロファイルが別のフォルダにあると私はMVCパターンを使用していますので、私はそれらを移動することはできません

EDITについて

<zip destfile="${buildDir}/free.zip" 
    basedir="${componente}" 
    excludes="**/features/pro/**, **/other/**"/> 

を行うことができることを意味し

MVCはフォルダレイアウトに関するものではありません。 It's about roles and responsibilities。ファイルを置く場所は何も言わない。いくつかのフレームワークでは、クラスファイルをどこに置くのかが慣例化されていますが、オートローダーがクラスファイルを見つけることができる限り、実際にどこにいるかは問題ではありません。

関連する問題