Antx新手入门
1.Antx希望解决的问题:
a).    Build
b).    Repository管理
c).    面向project而不是target(task)
2.Antx的安装:
a).    前提:安装JDK,并设置系统环境变量JAVA_HOME,指向JDK安装目录。
    b).    获取antx:svn co svn.alibaba-inc/repos/opentech/antx/trunk antx,或者使用TortoiseSVN获取。
    c).    build antx:执行build.bat或build.sh,执行完之后,会生成dist/antx目录。
    d).    设置环境变量:设置系统环境变量ANTX_HOME,指向生成的dist/antx目录,并将$A
NTX_HOME/bin目录加入到PATH环境变量中。
    e).    获取第二方类库并设置其位置:svn co svn.alibaba-inc/repos/binary/repository.project repository.project, repository.project默认应该放在user.home/.antx目录下,如果你本地不是放在这个路径下,则修改user.home目录下antx.properties文件,设置pository.project属性值为本地的repository.project所在目录。如果你还同时希望修改其它repository的位置,也可以在此设置。(默认情况下pository.local位于user.home/.antx/repository目录下,al位于$ANTX_HOME/repository目录下或者$ANTX_HOME/../../repository目录下)
3.    单项目antx的使用:
    a).    创建antx项目:antx gen(或者使用Antx eclipse plugin的项目创建向导功能,有关Antx eclipse plugin的使用,详见第8节),antx gen创建的目录结构如下:
    myproject
│  project.jelly    - 项目脚本文件
│  l    - 项目描述文件
├─docs            - 文档目录
└─src            - 源代码目录
    └─java            - Java源代码目录
    b).    修改生成的l,修改其项目id,添加需要的依赖库和其它构建属性,示例如下:
    <project id="my/project">
    <build>
        <property name=javapiler.source value=1.5/>
        <property name=javapiler.target value=1.5/>
            <dependencies>
                <include uri="jakarta/commons/lang"/>
        </dependencies>
    </build>
</project>
    c).    编写代码(位于src/java目录下)
    d).    在项目目录下执行antx jar或者antx,输出类似如下:
    java:compile:
        [mkdir] Created dir: C:\myproject\target\classes
    [javac] Compiling 1 source file to C:\myproject\target\classes
jar:jar:
        [jar] Building jar: C:\myproject\target\my-project.jar
    说明:antx jar和antx执行效果相同,是因为使用antx gen默认产生的project.jelly文件中指定了项目的默认目标为jar。
4.多项目antx的使用:
对于关系紧密的多个项目,一般会建立ProjectGroup,ProjectGroup目录结构一般会类似如下:
    Hello
│  project.jelly    - 总控项目脚本文件
│  l    - 总控项目描述文件
├─biz            - biz层
└─dal            - dal项目
└─user            - user项目
└─bundle        - bundle层
└─ear            - ear项目
└─war            - war项目
└─ejb            - ejb项目
└─web            - web层
└─user            - user项目
└─home        - home项目
└─deploy        - deploy项目
    首先总控项目文件会定义所有子项目都会使用的一些属性,例如build property以及projects定义,示例如下:
    <build>
        <!—指定reactor时的project group名称-->
        <property name="up" value="hello7"/>
        <!—指定ejb的目标服务器-->
        <property name="ejb.target.server" value="jboss"/>
</build>
<!—这是reactor group指定的项目组,一般需要指定每个子项目的相对路径-->
    <projects name="hello7" version="1.0">
        <project id="hello7/all" dir="."/>
        <project id="hello7/bundle/ejb" dir="bundle/ejb"/>
        <project id="hello7/bundle/war" dir="bundle/war"/>
        <project id="hello7/deploy" dir="deploy"/>
        <project id="hello7/web/home" dir="web/home"/>
        <project id="hello7/bundle/ear" dir="bundle/ear"/>
        <project id="hello7/web/user" dir="web/user"/>
</projects>
<!—统一指定了子项目所用到的lib的版本-->
    <projects name="toolkit-common" version="1.0">
        <project id="toolkit/common/lang"/>
        <project id="toolkit/common/collection"/>
        <project id="toolkit/common/logging"/>
        <project id="toolkit/common/resourcebundle"/>
        <project id="toolkit/common/configuration"/>
        <project id="toolkit/common/expression"/>
        <project id="toolkit/common/enum"/>
        <project id="toolkit/common/convert"/>
        <project id="toolkit/common/property"/>
        <project id="toolkit/common/resource"/>
        <project id="toolkit/common/regexp"/>
        <project id="toolkit/common/mail"/>
        <project id="toolkit/common/j2ee"/>
    </projects>
    对于所有的子项目而言,需要指定其extend自这个总控项目(指定相对路径,并且多个../可以压缩为一个../)。
    对于ProjectGroup,可以通过antx reactor来对于ProjectGroup中的每个子项目执行相应目标,并且antx reactor保证按照项目之间的依赖关系顺序构建。
5.repository :
为解决不同类型的项目之间的关联关系不同,构建方式也不同的问题,antx实现了三级repository。
第一级(local, 所谓的1st party类库
a)位置:$HOME\.antx\repository
b)用于关联关系较紧密的子项目
例如:同一个team在同一时间开发的若干子项目
c)该repository的内容只存在于本地,不需要被共享
第二级(project, 所谓的2nd party类库
d)位置(默认):$HOME\.antx\repository.project
e)用于关联关系较疏远的子项目
例如:不同team或不同时期开发的子项目
f)该repository的内容需要被team间共享
java系统变量设置g)该repository的内容通常需要注明版本号
第三级(external, 所谓的3rd party类库
h)位置:antx\repository或者antx\..\..\repository
i)用于定义第三方提供的类库
例如:Apache Jakarta类库
j)该repository随着antx更新而更新
k)该repository中的内容可以被注明版本号,也可以不注
6.常用antx命令:
antx : 执行当前项目的默认目标,默认目标即为project.jelly中的default属性值。
antx reactor : 对于Project Group中的每一个项目执行默认目标。ProjectGroup中的项目是怎样确定的呢:如果命令行上通过projects属性指定,则以这些projects为准;否则以总控项目文件中up属性对应的projects组中所包含的project为准;如果up没有指定,或者指定错误,则扫描当前目录下的所有子项目。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。