Apache Antバージョン1.8.0に付属しているドキュメントを探していますが、クラスパス、パス、およびパス要素がドキュメント化されている場所が見つかりません。構造のようなパスを説明するページを見つけましたが、これらの有効な属性またはネストされた要素がリストされていません。ドキュメントで見つけることができないもう1つのことは、filelist、fileset、patternset、pathの関係の説明と、それらを前後に変換する方法です。たとえば、1つのパッケージでそれらのクラスのみをコンパイルし、パッケージクラスのすべてのクラス依存関係を削除してドキュメントを更新する簡単な方法が必要です。
<!-- Get list of files in which we're interested. -->
<fileset id = "Java.source.set"
dir = "${src}">
<include name = "**/Package/*.Java" />
</fileset>
<!-- Get a COMMA separated list of classes to compile. -->
<pathconvert property = "Java.source.list"
refid = "Java.source.set"
pathsep = ",">
<globmapper from = "${src}/*.@{src.extent}"
to = "*.class" />
</pathconvert>
<!-- Remove ALL dependencies on package classes. -->
<depend srcdir = "${src}"
destdir = "${build}"
includes = "${Java.source.list}"
closure = "yes" />
<!-- Get a list of up to date classes. -->
<fileset id = "class.uptodate.set"
dir = "${build}">
<include name = "**/*.class" />
</fileset>
<!-- Get list of source files for up to date classes. -->
<pathconvert property = "Java.uptodate.list"
refid = "class.uptodate.set"
pathsep = ",">
<globmapper from="${build}/*.class" to="*.Java" />
</pathconvert>
<!-- Compile only those classes in package that are not up to date. -->
<javac srcdir = "${src}"
destdir = "${build}"
classpathref = "compile.classpath"
includes = "${Java.source.list}"
excludes = "${Java.uptodate.list}"/>
<!-- Get list of directories of class files for package. --:
<pathconvert property = "class.dir.list"
refid = "Java.source.set"
pathsep = ",">
<globmapper from = "${src}/*.Java"
to = "${build}*" />
</pathconvert>
<!-- Convert directory list to path. -->
<path id = "class.dirs.path">
<dirset dir = "${build}"
includes = "class.dir.list" />
</path>
<!-- Update package documentation. -->
<jdepend outputfile = "${docs}/jdepend-report.txt">
<classpath refid = "compile.classpath" />
<classpath location = "${build}" />
<classespath>
<path refid = "class.dirs.path" />
</classespath>
<exclude name = "Java.*" />
<exclude name = "javax.*" />
</jdepend>
異なるantタスクに必要な適切な「タイプ」を取得するためだけに、ファイルセット、パス、およびコンマ区切りリストの間に多数の変換があることに注意してください。複雑なディレクトリ構造で最も少ないファイルを処理しながら、これを簡素化する方法はありますか?
これは、クラスパスに関するドキュメントに最も近いものです。
パス :
このオブジェクトは、CLASSPATHまたはPATH環境変数で使用されるパスを表します。パスは、一意のファイルシステムリソースのコレクションとして説明されることもあります。
および PathElement :
ヘルパークラス。ネストされた
<pathelement>
値を保持します。
javaDocで直接定義されます。
ClassPath
は、 AbstractClasspathResource の実装です。
Javaクラスローダーを介してアクセスされるすべてのリソース表現。クラスパスを設定/解決するコアメソッドが提供されます。
Resource の直接のサブクラスです:
「ファイルのような」リソース(ファイル、ZipEntryなど)を記述します。このクラスは、ファイル、Zipエントリ、または同様のリソース(URL、バージョン管理リポジトリ内のアーカイブなど)に関するパスと日付/時刻情報を記録する必要があるクラスによって使用されることを意図しています。
FileSetは次のように定義されます:
FileSetはファイルのグループです。これらのファイルは、ベースディレクトリから始まるディレクトリツリーで見つけることができ、多数のPatternSetとSelectorから取得したパターンと一致します。
セレクターは次のように定義されます:
セレクタは、
<fileset>
および<include>
タグによって提供されるファイル名以外の基準に基づいて、<exclude>
を構成するファイルを選択できるメカニズムです。
PatternSetは次のように定義されます:
パターンはセットにグループ化でき、後でid属性によって参照できます。それらは、FileSetまたは暗黙的なFileSetを構成するディレクトリベースのタスクにネストされているように見えるpatternset要素を介して定義されます。さらに、パターンセットは、ターゲットと同じレベルのスタンドアロン要素として、つまりプロジェクトの子としてもターゲットの子としても定義できます。
FileListは次のように定義されます。
FileListは、明示的に名前が付けられたファイルのリストです。 FileSetsはフィルターとして機能し、ファイルシステムに存在し、指定されたパターンに一致するファイルのみを返すのに対し、FileListsは、存在する場合と存在しない場合があるファイルを指定するのに役立ちます。複数のファイルは、ワイルドカード拡張をサポートせずに、指定されたディレクトリに相対的なファイルのリストとして指定されます(ワイルドカードを含むファイル名は変更されないリストに含まれます)。ファイルリストは、この機能をサポートするタスク内またはスタンドアロンタイプとして表示できます。
Schematronでは、次の方法でこれを検証できます。
<sch:pattern>
<sch:title>Check allowed elements</sch:title>
<sch:rule context="target/*[name() = ancestor::*/taskdef/@name]">
<sch:assert test="true()">
The target element may contain user-defined tasks.
</sch:assert>
</sch:rule>
</sch:pattern>
参考文献