ant/ビルドプロセスを読む
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
*はじめに [#u57dcd01]
今回はantを読みます。カレントディレクトリにbuild.xmlがあ...
ant
とした場合にどのような処理が行われているのか見てみましょ...
なお、今回対象としたバージョンは1.7.0です。
*org.apache.tools.launch.Launcher [#rfe0d9be]
antコマンドを実行した場合に起動されるのはorg.apache.tools...
mainメソッドではLauncherオブジェクトを生成してrunメソッド...
というわけでメイン処理のorg.apache.tools.ant.Main.startAn...
*org.apache.tools.ant.Main [#kb580c80]
startAntメソッドではまずprocessArgsメソッドを呼んでいます...
runBuildメソッドではProjectオブジェクトを構築し、初期化(...
*org.apache.tools.ant.Project.init() [#g0a85247]
まず、プロパティを設定しています。Javaのバージョン番号設...
次に、ComponentHelper.initDefaultDefinitionsメソッドを呼...
*org.apache.tools.ant.ProjectHelper.configureProject() [#...
え〜っと、まずはProjectHelperの実装としていろいろなところ...
parseメソッドではまずAntXMLContextを生成しています。どう...
// top level file
context.setCurrentTargets(new HashMap());
parse(project, source, new RootHandler(context, mainHand...
// Execute the top-level target
context.getImplicitTarget().execute();
implicitTargetというのはtargetタグの外で設定されているも...
**ProjectHandler2.RootHandler [#ef3ca5a3]
SAXのイベントハンドラとしてProjectHandler2クラスの内部ク...
public void startElement(String uri, String tag, String ...
throws SAXParseException {
AntHandler next
= currentHandler.onStartChild(uri, tag, qname, a...
antHandlers.push(currentHandler);
currentHandler = next;
currentHandler.onStartElement(uri, tag, qname, attrs...
}
現在のハンドラに子要素が始まったことを教えて子要素をハン...
public AntHandler onStartChild(String uri, String name, ...
Attributes attrs,
AntXMLContext context)
throws SAXParseException {
if (name.equals("project")
&& (uri.equals("") || uri.equals(ANT_CORE_URI))) {
return ProjectHelper2.projectHandler;
} else {
// 例外送信
}
}
というわけでProjectHandlerがcurrentHandlerになっています...
context.setCurrentTarget(context.getImplicitTarget());
次にProjectHandlerのonStartChildメソッドです。
if (name.equals("target")
&& (uri.equals("") || uri.equals(ANT_CORE_URI))) {
return ProjectHelper2.targetHandler;
} else {
return ProjectHelper2.elementHandler;
}
今度はタグによってハンドラが変わるようです。TargetHandler...
**ProjectHandler2.ElementHandler [#y4f7817f]
さてElementHandlerです。Main, Project, Targetと来てその下...
target直下かどうかによって少し処理が変わるようですが全て...
以上でビルドファイルの読み込みは終わりです。
*org.apache.tools.ant.Project.executeTargets() [#b912bdbe]
ではターゲットの実行部です。一度Executorオブジェクト(実...
TargetクラスのperformTasksメソッドはexecuteメソッドを呼ん...
Taskクラスのperformメソッドのコア部分です。
maybeConfigure();
DispatchUtils.execute(this);
**UnknownElement [#o1c920d1]
maybeConfigureメソッドですが、UnknownElementクラスでオー...
public void maybeConfigure() throws BuildException {
if (realThing != null) {
return;
}
configure(makeObject(this, getWrapper()));
}
makeObjectメソッドのコア部分は以下です。
ComponentHelper helper = ComponentHelper.getComponentHel...
getProject());
String name = ue.getComponentName();
Object o = helper.createComponent(ue, ue.getNamespace(),...
3引数createComponentは1引数createComponentを呼び出した後...
1引数createComponentではgetDefinitionメソッドを呼び出して...
次にconfigureメソッドで生成したオブジェクトを設定します。...
**DispatchUtils [#p3cb1915]
Taskオブジェクトの構築が終了したらDispatchUtils.executeメ...
*おわりに [#h31ae472]
今回はantがどうやってビルドファイルを読んでターゲットを実...
-ビルトインタスクもtaskdefで定義できるタスクと同様に扱わ...
-タスクオブジェクトの生成は実際に実行されるまで遅延される...
-メソッド呼び出しがかなり深い
といったところです。それではみなさんもよいコードリーディ...
終了行:
#contents
*はじめに [#u57dcd01]
今回はantを読みます。カレントディレクトリにbuild.xmlがあ...
ant
とした場合にどのような処理が行われているのか見てみましょ...
なお、今回対象としたバージョンは1.7.0です。
*org.apache.tools.launch.Launcher [#rfe0d9be]
antコマンドを実行した場合に起動されるのはorg.apache.tools...
mainメソッドではLauncherオブジェクトを生成してrunメソッド...
というわけでメイン処理のorg.apache.tools.ant.Main.startAn...
*org.apache.tools.ant.Main [#kb580c80]
startAntメソッドではまずprocessArgsメソッドを呼んでいます...
runBuildメソッドではProjectオブジェクトを構築し、初期化(...
*org.apache.tools.ant.Project.init() [#g0a85247]
まず、プロパティを設定しています。Javaのバージョン番号設...
次に、ComponentHelper.initDefaultDefinitionsメソッドを呼...
*org.apache.tools.ant.ProjectHelper.configureProject() [#...
え〜っと、まずはProjectHelperの実装としていろいろなところ...
parseメソッドではまずAntXMLContextを生成しています。どう...
// top level file
context.setCurrentTargets(new HashMap());
parse(project, source, new RootHandler(context, mainHand...
// Execute the top-level target
context.getImplicitTarget().execute();
implicitTargetというのはtargetタグの外で設定されているも...
**ProjectHandler2.RootHandler [#ef3ca5a3]
SAXのイベントハンドラとしてProjectHandler2クラスの内部ク...
public void startElement(String uri, String tag, String ...
throws SAXParseException {
AntHandler next
= currentHandler.onStartChild(uri, tag, qname, a...
antHandlers.push(currentHandler);
currentHandler = next;
currentHandler.onStartElement(uri, tag, qname, attrs...
}
現在のハンドラに子要素が始まったことを教えて子要素をハン...
public AntHandler onStartChild(String uri, String name, ...
Attributes attrs,
AntXMLContext context)
throws SAXParseException {
if (name.equals("project")
&& (uri.equals("") || uri.equals(ANT_CORE_URI))) {
return ProjectHelper2.projectHandler;
} else {
// 例外送信
}
}
というわけでProjectHandlerがcurrentHandlerになっています...
context.setCurrentTarget(context.getImplicitTarget());
次にProjectHandlerのonStartChildメソッドです。
if (name.equals("target")
&& (uri.equals("") || uri.equals(ANT_CORE_URI))) {
return ProjectHelper2.targetHandler;
} else {
return ProjectHelper2.elementHandler;
}
今度はタグによってハンドラが変わるようです。TargetHandler...
**ProjectHandler2.ElementHandler [#y4f7817f]
さてElementHandlerです。Main, Project, Targetと来てその下...
target直下かどうかによって少し処理が変わるようですが全て...
以上でビルドファイルの読み込みは終わりです。
*org.apache.tools.ant.Project.executeTargets() [#b912bdbe]
ではターゲットの実行部です。一度Executorオブジェクト(実...
TargetクラスのperformTasksメソッドはexecuteメソッドを呼ん...
Taskクラスのperformメソッドのコア部分です。
maybeConfigure();
DispatchUtils.execute(this);
**UnknownElement [#o1c920d1]
maybeConfigureメソッドですが、UnknownElementクラスでオー...
public void maybeConfigure() throws BuildException {
if (realThing != null) {
return;
}
configure(makeObject(this, getWrapper()));
}
makeObjectメソッドのコア部分は以下です。
ComponentHelper helper = ComponentHelper.getComponentHel...
getProject());
String name = ue.getComponentName();
Object o = helper.createComponent(ue, ue.getNamespace(),...
3引数createComponentは1引数createComponentを呼び出した後...
1引数createComponentではgetDefinitionメソッドを呼び出して...
次にconfigureメソッドで生成したオブジェクトを設定します。...
**DispatchUtils [#p3cb1915]
Taskオブジェクトの構築が終了したらDispatchUtils.executeメ...
*おわりに [#h31ae472]
今回はantがどうやってビルドファイルを読んでターゲットを実...
-ビルトインタスクもtaskdefで定義できるタスクと同様に扱わ...
-タスクオブジェクトの生成は実際に実行されるまで遅延される...
-メソッド呼び出しがかなり深い
といったところです。それではみなさんもよいコードリーディ...
ページ名: