Junky's IT Notebook

          統(tǒng)計(jì)

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評(píng)論排行榜

          Ant全攻略

          轉(zhuǎn)自: BEA 論壇 powerise ?
          1.Ant
          是什么?

          Ant
          是一種基于 Java XML build 工具。


          2
          下載、安裝 Ant
          安裝
          Ant
          下載 .zip 文件,解壓縮到 c:\ant1.3( 后面引用為
          %ANT_HOME%)

          2.1
          在你運(yùn)行 Ant 之前需要做一些配置工作。

          ·
          bin 目錄加入 PATH 環(huán)境變量。
          ·
          設(shè)定 ANT_HOME 環(huán)境變量,指向你安裝 Ant 的目錄。在一些 OS 上, Ant 的腳本可以猜測(cè) ANT_HOME Unix Windos NT/2000 )-但最好不要依賴這一特性。

          ·
          可選地,設(shè)定 JAVA_HOME 環(huán)境變量(參考下面的高級(jí)小節(jié)),該變量應(yīng)該指向你安裝 JDK 的目錄。
          注意:不要將 Ant ant.jar 文件放到 JDK/JRE lib/ext 目錄下。 Ant 是個(gè)應(yīng)用程序,而 lib/ext 目錄是為 JDK 擴(kuò)展使用的(如 JCE JSSE 擴(kuò)展)。而且通過擴(kuò)展裝入的類會(huì)有安全方面的限制。
          2.2
          運(yùn)行 Ant

          運(yùn)行 Ant 非常簡(jiǎn)單,當(dāng)你正確地安裝 Ant 后,只要輸入 ant 就可以了。


          n
          沒有指定任何參數(shù)時(shí), Ant 會(huì)在當(dāng)前目錄下查詢 build.xml 文件。如果找到了就用該文件作為 buildfile 。如果你用 -find 選項(xiàng)。 Ant 就會(huì)在上級(jí)目錄中尋找 buildfile ,直至到達(dá)文件系統(tǒng)的根。要想讓 Ant 使用其他的 buildfile ,可以用參數(shù) -buildfile file ,這里 file 指定了你想使用的 buildfile

          n
          可以指定執(zhí)行一個(gè)或多個(gè) target 。當(dāng)省略 target 時(shí), Ant 使用標(biāo)簽 <project> default 屬性所指定的 target


          命令行選項(xiàng)總結(jié):
          ant [options] [target [target2 [target3] ...]]
          Options:
          -help print this message
          -projecthelp print project help information
          -version print the version information and exit
          -quiet be extra quiet
          -verbose be extra verbose
          -debug print debugging information
          -emacs produce logging information without adornments
          -logfile file use given file for log output
          -logger classname the class that is to perform logging
          -listener classname add an instance of class as a project listener
          -buildfile file use specified buildfile
          -find file search for buildfile towards the root of the filesystem and use the first one found
          -Dproperty=value set property to value
          例子
          ant
          使用當(dāng)前目錄下的 build.xml 運(yùn)行 Ant ,執(zhí)行缺省的 target
          ant -buildfile test.xml
          使用當(dāng)前目錄下的 test.xml 運(yùn)行 Ant ,執(zhí)行缺省的 target
          ant -buildfile test.xml dist
          使用當(dāng)前目錄下的 test.xml 運(yùn)行 Ant ,執(zhí)行一個(gè)叫做 dist target
          ant -buildfile test.xml -Dbuild=build/classes dist
          使用當(dāng)前目錄下的 test.xml 運(yùn)行 Ant ,執(zhí)行一個(gè)叫做 dist target ,并設(shè)定 build 屬性的值為 build/classes

          3
          編寫 build.xml

          Ant
          buildfile 是用 XML 寫的。每個(gè) buildfile 含有一個(gè) project


          buildfile
          中每個(gè) task 元素可以有一個(gè) id 屬性,可以用這個(gè) id 值引用指定的任務(wù)。這個(gè)值必須是唯一的。(詳情請(qǐng)參考下面的 Task 小節(jié))

          3.1 Projects

          project
          有下面的屬性:
          Attribute Description Required
          name
          項(xiàng)目名稱 . No
          default
          當(dāng)沒有指定 target 時(shí)使用的缺省
          target Yes
          basedir
          用于計(jì)算所有其他路徑的基路徑。該屬性可以被 basedir property 覆蓋。當(dāng)覆蓋時(shí),該屬性被忽略。如果屬性和 basedir property 都沒有設(shè)定,就使用 buildfile 文件的父目錄。
          No
          項(xiàng)目的描述以一個(gè)頂級(jí)的 <description> 元素的形式出現(xiàn)(參看 description 小節(jié))。


          一個(gè)項(xiàng)目可以定義一個(gè)或多個(gè) target 。一個(gè) target 是一系列你想要執(zhí)行的。執(zhí)行 Ant 時(shí),你可以選擇執(zhí)行那個(gè) target 。當(dāng)沒有給定 target 時(shí),使用 project default 屬性所確定的 target

          3.2 Targets

          一個(gè) target 可以依賴于其他的 target 。例如,你可能會(huì)有一個(gè) target 用于編譯程序,一個(gè) target 用于生成可執(zhí)行文件。你在生成可執(zhí)行文件之前必須先編譯通過,所以生成可執(zhí)行文件的 target 依賴于編譯 target Ant 會(huì)處理這種依賴關(guān)系。

          然而,應(yīng)當(dāng)注意到, Ant depends 屬性只指定了 target 應(yīng)該被執(zhí)行的順序-如果被依賴的 target 無法運(yùn)行,這種 depends 對(duì)于指定了依賴關(guān)系的 target 就沒有影響。

          Ant
          會(huì)依照 depends 屬性中 target 出現(xiàn)的順序(從左到右)依次執(zhí)行每個(gè) target 。然而,要記住的是只要某個(gè) target 依賴于一個(gè) target ,后者就會(huì)被先執(zhí)行。
          <target name="A"/>
          <target name="B" depends="A"/>
          <target name="C" depends="B"/>
          <target name="D" depends="C,B,A"/>
          假定我們要執(zhí)行 target D 。從它的依賴屬性來看,你可能認(rèn)為先執(zhí)行 C ,然后 B ,最后 A 被執(zhí)行。錯(cuò)了, C 依賴于 B B 依賴于 A ,所以先執(zhí)行 A ,然后 B ,然后 C ,最后 D 被執(zhí)行。

          一個(gè) target 只能被執(zhí)行一次,即時(shí)有多個(gè) target 依賴于它(看上面的例子)。

          如果(或如果不)某些屬性被設(shè)定,才執(zhí)行某個(gè) target 。這樣,允許根據(jù)系統(tǒng)的狀態(tài)( java version, OS, 命令行屬性定義等等)來更好地控制 build 的過程。要想讓一個(gè) target 這樣做,你就應(yīng)該在 target 元素中,加入 if (或 unless )屬性,帶上 target 因該有所判斷的屬性。例如:
          <target name="build-module-A" if="module-A-present"/>
          <target name="build-own-fake-module-A" unless="module-A-present"/>
          如果沒有 if unless 屬性, target 總會(huì)被執(zhí)行。

          可選的 description 屬性可用來提供關(guān)于 target 的一行描述,這些描述可由 -projecthelp 命令行選項(xiàng)輸出。

          將你的 tstamp task 在一個(gè)所謂的初始化 target 是很好的做法,其他的 target 依賴這個(gè)初始化 target 。要確保初始化 target 是出現(xiàn)在其他 target 依賴表中的第一個(gè) target 。在本手冊(cè)中大多數(shù)的初始化 target 的名字是 "init"

          target
          有下面的屬性:
          Attribute Description Required
          name target
          的名字 Yes
          depends
          用逗號(hào)分隔的 target 的名字列表,也就是依賴表。
          No
          if
          執(zhí)行 target 所需要設(shè)定的屬性名。
          No
          unless
          執(zhí)行 target 需要清除設(shè)定的屬性名。
          No
          description
          關(guān)于 target 功能的簡(jiǎn)短描述。
          No

          3.3 Tasks

          一個(gè) task 是一段可執(zhí)行的代碼。


          一個(gè) task 可以有多個(gè)屬性(如果你愿意的話,可以將其稱之為變量)。屬性只可能包含對(duì) property 的引用。這些引用會(huì)在 task 執(zhí)行前被解析。

          下面是 Task 的一般構(gòu)造形式:
          <name attribute1="value1" attribute2="value2" ... />
          這里 name task 的名字, attributeN 是屬性名, valueN 是屬性值。

          有一套內(nèi)置的( built-in task ,以及一些可選 task ,但你也可以編寫自己的 task

          所有的 task 都有一個(gè) task 名字屬性。 Ant 用屬性值來產(chǎn)生日志信息。

          可以給 task 賦一個(gè) id 屬性:
          <taskname id="taskID" ... />
          這里 taskname task 的名字,而 taskID 是這個(gè) task 的唯一標(biāo)識(shí)符。通過這個(gè)標(biāo)識(shí)符,你可以在腳本中引用相應(yīng)的 task 。例如,在腳本中你可以這樣:
          <script ... >
          task1.setFoo("bar");
          </script>
          設(shè)定某個(gè) task 實(shí)例的 foo 屬性。在另一個(gè) task 中(用 java 編寫),你可以利用下面的語句存取相應(yīng)的實(shí)例。
          project.getReference("task1").
          注意 1 :如果 task1 還沒有運(yùn)行,就不會(huì)被生效(例如:不設(shè)定屬性),如果你在隨后配置它,你所作的一切都會(huì)被覆蓋。

          注意 2 :未來的 Ant 版本可能不會(huì)兼容這里所提的屬性,因?yàn)楹苡锌赡芨緵]有 task 實(shí)例,只有 proxies

          3.4 Properties

          一個(gè) project 可以有很多的 properties 。可以在 buildfile 中用 property task 來設(shè)定,或在 Ant 之外設(shè)定。一個(gè) property 有一個(gè)名字和一個(gè)值。 property 可用于 task 的屬性值。這是通過將屬性名放在 "${" "}" 之間并放在屬性值的位置來實(shí)現(xiàn)的。例如如果有一個(gè) property builddir 的值是 "build" ,這個(gè) property 就可用于屬性值: ${builddir}/classes 。這個(gè)值就可被解析為 build/classes

          內(nèi)置屬性

          如果你使用了 <property> task 定義了所有的系統(tǒng)屬性, Ant 允許你使用這些屬性。例如, ${os.name} 對(duì)應(yīng)操作系統(tǒng)的名字。

          要想得到系統(tǒng)屬性的列表可參考 the Javadoc of System.getProperties

          除了 Java 的系統(tǒng)屬性, Ant 還定義了一些自己的內(nèi)置屬性:
          basedir project
          基目錄的絕對(duì)路徑 ( <project> basedir 屬性一樣 )

          ant.file buildfile
          的絕對(duì)路徑。
          ant.version Ant
          的版本。
          ant.project.name
          當(dāng)前執(zhí)行的 project 的名字;由 <project> name 屬性設(shè)定 .
          ant.java.version Ant
          檢測(cè)到的 JVM 的版本; 目前的值有
          "1.1", "1.2", "1.3" and "1.4".
          ???
          例子

          <project name="MyProject" default="dist" basedir=".">

          <!-- set global properties for this build -->
          <property name="src" value="."/>
          <property name="build" value="build"/>
          <property name="dist" value="dist"/>
          ???
          <target name="init">
          <!-- Create the time stamp -->
          <tstamp/>
          <!-- Create the build directory structure used by compile -->
          <mkdir dir="${build}"/>
          </target>
          ?
          <target name="compile" depends="init">
          <!-- Compile the java code from ${src} into ${build} -->
          <javac srcdir="${src}" destdir="${build}"/>
          </target>

          <target name="dist" depends="compile">
          <!-- Create the distribution directory -->
          <mkdir dir="${dist}/lib"/>
          <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
          <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
          </target>

          <target name="clean">
          <!-- Delete the ${build} and ${dist} directory trees -->
          <delete dir="${build}"/>
          <delete dir="${dist}"/>
          </target>

          </project>

          3.5 Path-like Structures

          你可以用 ":" ";" 作為分隔符,指定類似 PATH CLASSPATH 的引用。 Ant 會(huì)把分隔符轉(zhuǎn)換為當(dāng)前系統(tǒng)所用的分隔符。

          當(dāng)需要指定類似路徑的值時(shí),可以使用嵌套元素。一般的形式是
          <classpath>
          <pathelement path="${classpath}"/>
          <pathelement location="lib/helper.jar"/>
          </classpath>
          location
          屬性指定了相對(duì)于 project 基目錄的一個(gè)文件和目錄,而 path 屬性接受逗號(hào)或分號(hào)分隔的一個(gè)位置列表。 path 屬性一般用作預(yù)定義的路徑--其他情況下,應(yīng)該用多個(gè) location 屬性。

          為簡(jiǎn)潔起見, classpath 標(biāo)簽支持自己的 path location 屬性。所以:
          <classpath>
          <pathelement path="${classpath}"/>
          </classpath>
          可以被簡(jiǎn)寫作:
          <classpath path="${classpath}"/>
          也可通過 <fileset> 元素指定路徑。構(gòu)成一個(gè) fileset 的多個(gè)文件加入 path-like structure 的順序是未定的。
          <classpath>
          <pathelement path="${classpath}"/>
          <fileset dir="lib">
          <include name="**/*.jar"/>
          </fileset>
          <pathelement location="classes"/>
          </classpath>
          上面的例子構(gòu)造了一個(gè)路徑值包括: ${classpath} 的路徑,跟著 lib 目錄下的所有 jar 文件,接著是 classes 目錄。

          如果你想在多個(gè) task 中使用相同的 path-like structure ,你可以用 <path> 元素定義他們(與 target 同級(jí)),然后通過 id 屬性引用--參考 Referencs 例子。

          path-like structure
          可能包括對(duì)另一個(gè) path-like structurede 的引用(通過嵌套 <path> 元素):
          <path id="base.path">
          <pathelement path="${classpath}"/>
          <fileset dir="lib">
          <include name="**/*.jar"/>
          </fileset>
          <pathelement location="classes"/>
          </path>
          <path id="tests.path">
          <path refid="base.path"/>
          <pathelement location="testclasses"/>
          </path>
          前面所提的關(guān)于 <classpath> 的簡(jiǎn)潔寫法對(duì)于 <path> 也是有效的,如:
          <path id="tests.path">
          ? <path refid="base.path"/>
          <pathelement location="testclasses"/>
          </path>
          可寫成:
          <path id="base.path" path="${classpath}"/>
          命令行變量

          有些 task 可接受參數(shù),并將其傳遞給另一個(gè)進(jìn)程。為了能在變量中包含空格字符,可使用嵌套的 arg 元素。
          Attribute Description Required
          value
          一個(gè)命令行變量;可包含空格字符。 只能用一個(gè)
          line
          空格分隔的命令行變量列表。
          file
          作為命令行變量的文件名;會(huì)被文件的絕對(duì)名替代。

          path
          一個(gè)作為單個(gè)命令行變量的 path-like 的字符串;或作為分隔符, Ant 會(huì)將其轉(zhuǎn)變?yōu)樘囟ㄆ脚_(tái)的分隔符。


          例子

          <arg value="-l -a"/>
          是一個(gè)含有空格的單個(gè)的命令行變量。
          <arg line="-l -a"/>
          是兩個(gè)空格分隔的命令行變量。
          <arg path="/dir;/dir2:\dir3"/>
          是一個(gè)命令行變量,其值在 DOS 系統(tǒng)上為 \dir;\dir2;\dir3 ;在 Unix 系統(tǒng)上為 /dir:/dir2:/dir3

          3.6 References

          buildfile
          元素的 id 屬性可用來引用這些元素。如果你需要一遍遍的復(fù)制相同的 XML 代碼塊,這一屬性就很有用--如多次使用 <classpath> 結(jié)構(gòu)。

          下面的例子:
          <project ... >
          <target ... >???
          <rmic ...>?????
          <classpath>???????
          <pathelement location="lib/"/>???????
          <pathelement path="${java.class.path}/"/>???????
          <pathelement path="${additional.path}"/>?????
          </classpath>???
          </rmic>?
          </target>
          <target ... >
          <javac ...>
          <classpath>
          <pathelement location="lib/"/>
          <pathelement path="${java.class.path}/"/>
          <pathelement path="${additional.path}"/>
          </classpath>
          </javac>
          </target>
          </project>
          可以寫成如下形式:
          <project ... >
          <path id="project.class.path">?
          <pathelement location="lib/"/>
          <pathelement path="${java.class.path}/"/>??
          <pathelement path="${additional.path}"/>
          </path>
          <target ... >
          <rmic ...>
          <classpath refid="project.class.path"/>
          </rmic>
          </target>
          <target ... >
          <javac ...>
          <classpath refid="project.class.path"/>
          </javac>
          </target>
          </project>
          所有使用 PatternSets, FileSets path-like structures 嵌套元素的 task 也接受這種類型的引用。
          ================================================================

          ?????????????????????????????? Ant
          全攻略(續(xù))--- Ant 中的內(nèi)置任務(wù)

          4.1 File
          Directory )類
          4.1.1 Mkdir
          n
          創(chuàng)建一個(gè)目錄,如果他的父目錄不存在,也會(huì)被同時(shí)創(chuàng)建。
          n
          例子:
          <mkdir dir="build/classes"/>
          n
          說明: 如果 build 不存在,也會(huì)被同時(shí)創(chuàng)建
          4.1.2 Copy
          n
          拷貝一個(gè)(組)文件、目錄
          n
          例子:
          1.
          拷貝單個(gè)的文件:
          <copy file="myfile.txt" tofile="mycopy.txt"/>
          2.
          拷貝單個(gè)的文件到指定目錄下

          <copy file="myfile.txt" todir="../some/other/dir"/>
          3.
          拷貝一個(gè)目錄到另外一個(gè)目錄下
          ? <copy todir="../new/dir">
          ??? <fileset dir="src_dir"/>
          ? </copy>
          4.
          拷貝一批文件到指定目錄下
          ? <copy todir="../dest/dir">
          ??? <fileset dir="src_dir">
          ????? <exclude name="**/*.java"/>
          ??? </fileset>
          ? </copy>

          ? <copy todir="../dest/dir">
          ??? <fileset dir="src_dir" excludes="**/*.java"/>
          ? </copy>
          5.
          拷貝一批文件到指定目錄下,將文件名后增加。 Bak 后綴
          ? <copy todir="../backup/dir">
          ??? <fileset dir="src_dir"/>
          ??? <mapper type="glob" from="*" to="*.bak"/>
          ? </copy>
          6.
          拷貝一組文件到指定目錄下,替換其中的 @ 標(biāo)簽 @ 內(nèi)容
          ? <copy todir="../backup/dir">
          ??? <fileset dir="src_dir"/>
          ??? <filterset>
          ????? <filter token="TITLE" value="Foo Bar"/>
          ??? </filterset>
          ? </copy>
          4.1.3 Delete
          n
          刪除一個(gè)(組)文件或者目錄
          n
          例子
          1.
          刪除一個(gè)文件
          <delete file="/lib/ant.jar"/>
          2.
          刪除指定目錄及其子目錄
          ? <delete dir="lib"/>
          3.
          刪除指定的一組文件
          ? <delete>
          ??? <fileset dir="." includes="**/*.bak"/>
          ? </delete>
          4.
          刪除指定目錄及其子目錄,包括他自己
          ? <delete includeEmptyDirs="true">
          ??? <fileset dir="build"/>
          ? </delete>
          4.1.4 Move
          n
          移動(dòng)或重命名一個(gè)(組)文件、目錄
          n
          例子:
          1.
          移動(dòng)或重命名一個(gè)文件
          <move file="file.orig" tofile="file.moved"/>
          2.
          移動(dòng)或重命名一個(gè)文件到另一個(gè)文件夾下面
          <move file="file.orig" todir="dir/to/move/to"/>
          3.
          將一個(gè)目錄移到另外一個(gè)目錄下
          <move todir="new/dir/to/move/to">
          <fileset dir="src/dir"/>
          </move>
          4.
          將一組文件移動(dòng)到另外的目錄下
          <move todir="some/new/dir">
          <fileset dir="my/src/dir">
          <include name="**/*.jar"/>
          <exclude name="**/ant.jar"/>
          </fileset>
          </move>
          5.
          移動(dòng)文件過程中增加。 Bak 后綴
          <move todir="my/src/dir">
          <fileset dir="my/src/dir">
          <exclude name="**/*.bak"/>
          </fileset>
          <mapper type="glob" from="*" to="*.bak"/>
          </move>

          ? ================================================================
          ???????????????????????????????????????????? Ant
          全攻略 ? --? Java 相關(guān)任務(wù)

          4.2.1 Javac
          n
          編譯 java 原代碼
          n
          例子
          1. <javac srcdir="${src}"
          ???????? destdir="${build}"
          ???????? classpath="xyz.jar"
          ???????? debug="on"
          ? />
          編譯 ${src} 目錄及其子目錄下的所有。 Java 文件,。 Class 文件將放在 $ build }指定的目錄下, classpath 表示需要用到的類文件或者目錄, debug 設(shè)置為 on 表示輸出 debug 信息
          2. <javac srcdir="${src}:${src2}"
          ???????? destdir="${build}"
          ???????? includes="mypackage/p1/**,mypackage/p2/**"
          ???????? excludes="mypackage/p1/testpackage/**"
          ???????? classpath="xyz.jar"
          ???????? debug="on"
          ? />
          編譯 ${src} ${src2} 目錄及其子目錄下的所有。 Java 文件,但是 package/p1/**,mypackage/p2/** 將被編譯,而 mypackage/p1/testpackage/** 將不會(huì)被編譯。 Class 文件將放在 $ build }指定的目錄下, classpath 表示需要用到的類文件或者目錄, debug 設(shè)置為 on 表示輸出 debug 信息
          3. <property name="classpath" value=".;./xml-apis.jar;../lib/xbean.jar;./easypo.jar"/>

          <javac srcdir="${src}"
          ???????? destdir="${src}"
          classpath="${classpath}"
          debug="on"
          />
          路徑是在 property 中定義的
          4.2.2 java
          n
          執(zhí)行指定的 java
          n
          例子:
          1. <java classname="test.Main">
          ???????? <classpath>
          ?????????? <pathelement location="dist/test.jar"/>
          ?????????? <pathelement path="${java.class.path}"/>
          ???????? </classpath>
          ?????? </java>
          classname
          中指定要執(zhí)行的類, classpath 設(shè)定要使用的環(huán)境變量
          2. <path id="project.class.path">
          ??? <pathelement location="lib/"/>
          ??? <pathelement path="${java.class.path}/"/>
          ??? <pathelement path="${additional.path}"/>
          ? </path>

          ? <target ... >
          ??? <rmic ...>
          ????? <classpath refid="project.class.path"/>
          ??? </rmic>
          ? </target>

          ================================================================

          ?????????????????????????????????????? Ant 全攻略 ? --???? 通過 JDBC 執(zhí)行 SQL 語句

          4.5
          執(zhí)行 SQL 語句

          n
          通過 jdbc 執(zhí)行 SQL 語句
          n
          例子:
          1. <sql
          ??? driver="org.gjt.mm.mysql.Driver"
          ??? url="jdbc:mysql://localhost:3306/mydb"
          ??? userid="root"
          ??? password="root"
          ??? src="data.sql"
          />
          2. <sql
          ??? driver="org.database.jdbcDriver"
          ??? url="jdbc:database-url"
          ??? userid="sa"
          ??? password="pass"
          ??? src="data.sql"
          ??? rdbms="oracle"
          ??? version="8.1."
          ??? >
          </sql>
          只有在 oracle 、版本是 8.1 的時(shí)候才執(zhí)行

          ================================================================
          ??????????????????????????????????????? Ant
          全攻略之 ? --- ? 發(fā)送郵件

          4.6
          發(fā)送郵件
          n
          使用 SMTP 服務(wù)器發(fā)送郵件
          n
          例子:
          <mail mailhost="smtp.myisp.com" mailport="1025" subject="Test build">
          ? <from address="me@myisp.com"/>
          ? <to address="all@xyz.com"/>
          ? <message>The ${buildname} nightly build has completed</message>
          ? <fileset dir="dist">
          ??? <includes name="**/*.zip"/>
          ? </fileset>
          </mail>
          l mailhost
          SMTP 服務(wù)器地址
          l mailport
          服務(wù)器端口
          l subject
          ? 主題
          l from
          ??? 發(fā)送人地址
          l to
          ????? 接受人地址
          l message
          發(fā)送的消息
          l fileset
          ? 設(shè)置附件

          posted on 2006-12-31 11:37 junky 閱讀(341) 評(píng)論(0)  編輯  收藏 所屬分類: ant


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 崇阳县| 茶陵县| 上林县| 河西区| 尼木县| 北安市| 武乡县| 卓尼县| 宜兰市| 镇远县| 阳春市| 阳谷县| 建德市| 隆回县| 迁西县| 江门市| 黔东| 井研县| 彩票| 平舆县| 芮城县| 黄浦区| 定结县| 介休市| 遂平县| 荔浦县| 共和县| 罗城| 本溪市| 淮北市| 蕉岭县| 德钦县| 天水市| 万载县| 仪征市| 沛县| 汝阳县| 尚志市| 庆元县| 达拉特旗| 微博|