SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
基于Ivy/Ant的Java构建初探

            统一系统部 杨剑


2012-6-20    杭州斯凯网络科技有限公司   1
选择Ivy的N个理由

                   使用Ivy

                   系统构建步骤

                   系统构建规范

                   Ivy Resources



2012-6-20   杭州斯凯网络科技有限公司           2
Java构建的进化过程

                  直接在lib中添加jar包
            初期    1. 直接使用IDE导出
                  2. 使用Ant来构建


                  定义userlibraries,包含jar包声明
            过渡    1. 使用Ant构建




                  使用Ivy、Maven统一管理依赖
            现在    1. 使用Ant+Ivy构建
                  2. 使用Maven构建


                  。。。。。。
            未来


2012-6-20        杭州斯凯网络科技有限公司                3
Apache Ivy
Apache Ivy™ is a popular dependency manager
focusing on flexibility and simplicity.


Apache Ivy 是Apache Ant 下的一个子项目。是
一个优秀的管理(记彔、跟踪、解析和报告)
项目依赖的工具,提供了强大的依赖管理功
能,可与Apache Ant紧密集成。


2012-6-20         杭州斯凯网络科技有限公司                4
功能
 能够和Apache Ant紧密集成
 支持多个不同的依赖存储
 依赖报告Dependency Reporting
 支持持续集成
 强大的冲突管理功能



                      reference:http://ant.apache.org/ivy/features.html

2012-6-20        杭州斯凯网络科技有限公司                                         5
Ant+Ivy VS Maven

                       Maven                Ant+Ivy

            概念        项目管理工具                项目构建工具
                                            +依赖管理工具

   标准构建文件         project.xml、maven.xml      build.xml



   标准依赖文件               pom.xml               ivy.xml



      学习成本            需要重新学习              目前项目中大多使用Ant
                       曲线比较大               构建,只需要接入Ivy




2012-6-20         杭州斯凯网络科技有限公司                           6
谁在用
 Spring Framework




2012-6-20         杭州斯凯网络科技有限公司   7
选择Ivy的N个理由

                   使用Ivy

                   系统构建步骤

                   系统构建规范

                   Ivy Resources



2012-6-20   杭州斯凯网络科技有限公司           8
环境安装
 安装 ANT
   配置环境变量:
       ANT_HOME::D:Javadevapache-ant
       PATH:%ANT_HOME%bin,(为了方便在命令行下操作)


 下载Ivy
        将下载的ivy安装包解压,然后复制ivy的jar文件到ant的
lib目彔下(ANT_HOME/lib)。

  转到ivy解压的src/example/hello-ivy目彔并运行ant,检
验环境是否配置成功。

2012-6-20                     杭州斯凯网络科技有限公司   9
IDE集成
 Eclipse
        Apache IvyDE

 Intellij IDEA
        IvyIDEA
        Ivy Plugin


目前Eclipse的支持较好,其他IDE的支持正在改善中




2012-6-20              杭州斯凯网络科技有限公司   10
术语
                       术语                      描述
Organisation                         组织名
Module                               模块
Module Descriptor                    模块描述符
Artifact                             制品
Type of an artifact                  制品类型
Artifact file name extension         制品文件扩展名
Module Revision                      模块修订版本
Branch                               分支
Status of a revision                 修订本状态
Configurations of a module           模块配置
Ivy Settings                         ivy设置
Repository                           仓库


2012-6-20                      杭州斯凯网络科技有限公司         11
2012-6-20   杭州斯凯网络科技有限公司   12
如何工作




2012-6-20      杭州斯凯网络科技有限公司   13
选择Ivy的N个理由

                   使用Ivy

                   系统构建步骤

                   系统构建规范

                   Ivy Resources



2012-6-20   杭州斯凯网络科技有限公司           14
IvyDE设置
 设置Ivy Settings
Ivy settings path:
http://stcdev.sky-mobi.com:8080/devconf/ivysettings.xml




2012-6-20            杭州斯凯网络科技有限公司                     15
build.xml
  <?xml version="1.0" encoding="UTF-8" ?>
  <!--ant 脚本文件 -->

  <project name="rop-mis" basedir=".">

    <!--设置下面要用到的属性-->
    <property name="module.name" value="${ant.project.name}" />
    <property name="module.version" value="1.0.0" />

    <property name="devconf.url" value="http://stcdev.sky-mobi.com:8080/devconf" />
    <property name="app.buildfile" value="build-app.xml" />

    <!-- import file="../allconf/${app.buildfile}" as=“impl"/ -->
    <import as="impl">
       <url url="${devconf.url}/${app.buildfile}"/>
    </import>
  </project>

   其中import标签,需要ant添加组件jar,可以到
   https://svn2.sky-mobi.com:9991/svn/netdevpublic/TOOLS
   下载已经集成的Ant

2012-6-20                         杭州斯凯网络科技有限公司                                        16
ivy.xml
  <?xml version="1.0" encoding="UTF-8"?>
  <ivy-module version="2.0“
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
  <info organisation="skymobi.app"
      module="${module.name}"
      revision="1.0.0"
      status="release"
      publication="20101124120000">
       <description                                     homepage="http://stcdev.sky-
  mobi.com/redmine/projects/${module.name}">
        Skymobi app:${module.name}
       </description>
    </info>

    <configurations>
      <conf name="compile" visibility="public"/>
      <conf name="test" visibility="private" extends="compile" />
      <conf name="runtime" visibility="public" extends="compile" />
    <conf name="develop" visibility="public" extends="compile" />
  </configurations>

2012-6-20                      杭州斯凯网络科技有限公司                                        17
ivy.xml
  <publications>
      <artifact name="rop-mis" type="jar" ext="jar" conf="compile"/>
      <artifact name="rop-mis" type="source" ext="jar" conf="develop"/>
      <artifact name="rop-mis" type="javadoc" ext="jar" conf="develop"/>
      <artifact name="rop-mis" type="distribution" ext="zip" conf="runtime"/>
  </publications>
  <dependencies>
    <dependency org="skymobi.stc" name="stc-util"
         rev="latest.release" conf="compile"/>
    <dependency org="skymobi.stc" name="stc-bean"
         rev="latest.release" conf="compile"/>

    <dependency org="com.oracle" name="oracle-jdbc-classes12"
        rev="10.2.0.1.0" conf="runtime->default(*)"/>
    <dependency org="junit" name="junit"
        rev="4.8.2" conf="test->default(*)"/>

      <dependency org="skymobi.stc" name="stc-unit-repo"
         rev="snapshot" conf="compile" transitive="false" changing="true"/>
  <dependencies>
  </ivy-module>

2012-6-20                      杭州斯凯网络科技有限公司                                     18
ivy.xml
       属性                描述                      基数
info             包含被描述的模块的信息         1
configurations   配置元素的容器             0..1
publications     发布制品元素的容器           0..1
dependencies     依赖元素的容器             0..1

其中需要改变的是dependencies中的dependency标签,对依赖文件进行管理

       属性                描述                是否必须
org              依赖的organisation名称   否,默认与模块organisation相同
name             依赖的module名称         是
rev              依赖的版本号              是
conf             内联映射配置              否
transitive       true时,递归解析依赖        否,默认为true
changing         true时,依赖不受版本控制 否,默认false

2012-6-20                杭州斯凯网络科技有限公司                        19
添加到classpath

   1. 右键ivy.xml,Add Ivy Library

   2. Classpath添加ivy依赖,选择项目->右键属性->Java Build Path->Libraries->Add
   Library...->IvyIDE Managed Dependencies->finish->OK




2012-6-20                   杭州斯凯网络科技有限公司                             20
Demo
 改造原有的项目
 新建项目




2012-6-20          杭州斯凯网络科技有限公司   21
选择Ivy的N个理由

                   使用Ivy

                   系统构建步骤

                   系统构建规范

                   Ivy Resources



2012-6-20   杭州斯凯网络科技有限公司           22
MIS
 目彔结构




2012-6-20         杭州斯凯网络科技有限公司   23
目录结构
       1. 程序目彔                            2. 脚本目彔
                目彔               描述             目彔            描述
       srcmainjava       主程序            bsh         BeanShell脚本

       srcmainresource   主程序的配置文件       hyperic     hyperic配置

       srctestjava       测试程序           sh          Shell脚本

       srctestresource   测试程序的配置文件      sql         Sql脚本

                                          manifest    MANIFEST.MF文件


       3. 功能单元配置目彔

                           目彔                        描述
       private                           私有单元配置文件

       public                            公有单元配置文件




2012-6-20                         杭州斯凯网络科技有限公司                        24
Ant Task
    根据build.xml中声明,import一个build-app.xml,该文件声明ant的
构建任务,svn地址:
https://svn2.sky-mobi.com:9991/svn/netdevpublic/allconf/build-
app.xml
build-app.xml中声明的重要的Ant Task

         任务            定义                     依赖(depends)
resolve         解析依赖
report          生成依赖报告              resolve
init            初始化目彔
prepare-dep     hudson构建的变量设置       …
compile         执行编译Java文件          resolve、report、prepare-dep、init
compile-test    执行编译Java测试文件        init
clean-all       清理target目彔


2012-6-20              杭州斯凯网络科技有限公司                              25
Ant Task
       任务                  定义                  依赖(depends)
clean-deploy      清理classes目彔
run-test          运行测试用例            compile、compile-test
jar               生成jar包            clean-all、compile、run-test
jar-test          生成jar-test包       jar、compile-test
source-jar        生成源码包             jar
doc-jar           生成doc包            jar
clean-deploy      清理classes目彔
make-bin          生成bin目彔           jar
make-dist         生成项目zip           make-bin、doc-jar
publish-snapshot 发布snapshot版本       make-dist,jar,source-jar,doc-jar
publish-release   发布release版本       make-dist,jar,source-jar,doc-jar



2012-6-20                  杭州斯凯网络科技有限公司                                26
build-app.xml
     使用ivy,最频繁的方式是在Ant构建文件中,如果使用的Ant为
 1.6.0版本或以上,只需要添加ivy的命名空间到项目中(project标签的属
 性) xmlns:ivy="antlib:org.apache.ivy.ant“
 <project xmlns:ivy="antlib:org.apache.ivy.ant" >


 ivy setting
  <ivy:settings url="http://stcdev.sky-mobi.com:8080/devconf/ivysettings.xml" />



 如果不设置ivysetting,默认读http://ant.apache.org/ivy/history/latest-
 milestone/samples/ivysettings-default.xml




2012-6-20                        杭州斯凯网络科技有限公司                                      27
build-app.xml
  <target name="resolve"
            description="--> retreive dependencies with ivy">
      <ivy:retrieve
            pattern="${module.target}/lib/[conf]/[artifact]-[revision]-[type].[ext]"
         conf="compile,test,runtime"
         type="jar,bundle" />
  </target>



  ivy:retrieve任务复制解析好的依赖到你的文件系统的任何位置,它是
  一个post resolve任务,拥有post resolve任务共有的所有的行为和属
  性。




2012-6-20                         杭州斯凯网络科技有限公司                                         28
retrieve
    属性                  描述                          必须
pattern      用来复制依赖的正则表达式                  No,默认${ivy.retrieve.pattern}
conf         用于获取配置的列表,逗号分隔                No,
type         可以接受的制品类型                     No,默认为所有类型都接受

pattern="${module.target}/lib/[conf]/[artifact]-[revision]-[type].[ext]“
获取最后一次解析调用的所有依赖到lib目彔中,依赖将分隔在按照组织命
名的目彔中,每个conf目彔包含对应的带修订版本和制品类型依赖
conf="compile,test,runtime“
声明了三个配置compile、test、runtime,那么lib目彔应该是这样的:
lib
  compile
   stc-bean-1.0.6-jar.jar
  test
   stc-bean-1.0.6-jar.jar
runtime
   stc-bean-1.0.6-jar.jar
2012-6-20                杭州斯凯网络科技有限公司                                 29
post resolve tasks
在ivy中有几个任务被认为是后解析任务(post resolve task),并相应地共
享公用行为和设置。这些任务是:

 retrieve
 cachefileset
 cachepath
 artifactproperty (since 2.0)
 artifactreport (since 2.0)
所有这些任务都将自动触发resolve

2012-6-20          杭州斯凯网络科技有限公司            30
resolve
    解析在ivy.xml文件中描述的依赖,并将解析后的依赖放置到ivy缓
 存中。
    ivy缓存默认为user.home/cache目彔,它通过下面的方式确定路
 径:
   1. 查找变量ivy.cache.dir
   2. 如果没有找到,使用ivy.default.ivy.user.dir/cache
   ivy.default.ivy.user.dir默认情况使用user.home
   所以要改变cache目彔,在build.xml设置
    <property name="ivy.default.ivy.user.dir" value="D:ivy" />



    当ivy完成解析任务时,它将输出概要:




2012-6-20               杭州斯凯网络科技有限公司                              31
resolve




    Tag         tag                   模式
modules
            number    配置下被解析的依赖模块的总数目,包括间接的依赖
            search    需要访问仓库的依赖模块的数目
            dwnlded   从仓库下载的依赖模块的数目
            evicted   冲突管理器筛选出依赖模块的数目
artifacts
            number    配置下被解析的制品的总数目
            dwnlded   从仓库实际下载的制品数目

2012-6-20              杭州斯凯网络科技有限公司         32
publish
 发行当前模块的制品和已解析的描述符(模块声明的ivy文件)
 目的是发行当前模块描述符和它声明的发行制品到仓库中,提供给其
 他项目使用。
  <ivy:publish resolver="share-release"
        artifactspattern="${release.dir}/[artifact]-[revision]-[type].[ext]"
        srcivypattern="${module.home}/ivy.xml"
        pubrevision="${module.version}"
        update="true" overwrite="true"
        status="release" />




2012-6-20                         杭州斯凯网络科技有限公司                                 33
publish
     属性                      描述                               必须
resolver        用来发行制品的解析器名称                    是
                                             No,默认
artifactspattern 用于查找发行制品的正则表达式
                                             ${ivy.publish.src.artifacts.pattern}
                用于查找发行制品ivy文件的正 No,默认与artifactspattern
srcivypattern
                则表达式                         相同
pubrevision     用于发行的修订颁布                    No,默认为${ivy.deliver.revision}
                true 时 在 发 行 前 更 新 ivy 文 件 的 No,默认为false
update
                metadata,false相反
                true时覆盖仓库中修订版本一样 No,默认为false
overwrite
                的文件,false相反
status          发行的status                    No,默认${ivy.status}

 publish-snapshot与publish-release,区别在于用的resolver, resolver
 的声明在ivysettings.xml中可以找到。


2012-6-20                    杭州斯凯网络科技有限公司                                    34
WEB
 目彔结构




2012-6-20         杭州斯凯网络科技有限公司   35
目录结构
 目彔结构

            术语                       描述
src                      程序目彔
resources                程序配置文件
WebContent(WebRoot)      web目彔




2012-6-20             杭州斯凯网络科技有限公司        36
build.xml
  <?xml version="1.0" encoding="UTF-8" ?>

  <project name="sup-cms" basedir=".">

    <!--property name="ivy.default.ivy.user.dir" value="D:ivy" /-->
    <!--设置下面要用到的属性-->
    <property name="module.name" value="${ant.project.name}" />
    <property name="module.version" value="1.0.0" />
    <!-- 不同IDE工程的Webcontent不同-->
    <property name="web.content" value="WebContent"/>

    <property name="devconf.url" value="http://stcdev.sky-mobi.com:8080/devconf" />
    <property name="lib.buildfile" value="build-web.xml" />

    <import file="build-web.xml" as="impl"/>
    <!--import as="impl">
       <url url="${devconf.url}/${lib.buildfile}"/>
    </import-->
  </project>



2012-6-20                         杭州斯凯网络科技有限公司                                        37
Ant Task
         任务             定义                   依赖(depends)
resolve         解析依赖
report          生成依赖报告           resolve
init            初始化目彔            clean-all
prepare-dep     hudson构建的变量设置    …
compile         执行编译Java文件       resolve、report、prepare-dep、init
one-war         打war包            compile
make-dist       把项目打成zip         one-war
clean-all       清理target目彔
clean-deploy    清理classes目彔




2012-6-20               杭州斯凯网络科技有限公司                          38
build-web.xml
  resolve和report target与mis端声明类似。
  其中比较重要,也需要注意的就是打war包,其中classes目彔不使用
  WEB-INF自动生成的,而是使用通过compile出来classes。

  <target name="one-war" depends="compile">
    <war warfile="${dist.war}/${module.name}.war" webxml="${module.webxml}"
  manifest="${web.content}/META-INF/MANIFEST.MF">
       <fileset dir="${web.content}">
             <include name="**/*.*"/>
             <exclude name="**/web.xml"/>
             <exclude name="**/classes/**"/>
      </fileset>

      <classes dir="${module.classes}"/>

      <lib dir="${compile.lib}/runtime">
          <include name="**/*.jar"/>
      </lib>


2012-6-20                       杭州斯凯网络科技有限公司                                  39
build-web.xml

  <manifest>
    <attribute name="Specification-Title" value="${module.name}"/>
    <attribute name="Specification-Version" value="${module.version}"/>
    <attribute name="Implementation-Title" value="${module.name}"/>
    <attribute name="Implementation-Version“ value="${module.version}-
  ${dist.build.number}-${dist.build.id}-[${dist.revision}]"/>
    <attribute name="Specification-Vendor"
                     value="SKY NETWORK TECHNOLOGIES CO.,LTD"/>
    <attribute name="Implementation-Vendor"
                     value="SKY NETWORK TECHNOLOGIES CO.,LTD"/>
  </manifest>
  </war>
  </target>




2012-6-20                     杭州斯凯网络科技有限公司                                40
选择Ivy的N个理由

                   使用Ivy

                   系统构建步骤

                   系统构建规范

                   Ivy Resources



2012-6-20   杭州斯凯网络科技有限公司           41
Ivy Resources
 Java开发库管理平台(公司)
http://stcdev.sky-mobi.com:8080/nexus/


 Mvn Repositories
         Mvnrepository
         IBiblio maven repository
         JBoss Maven Repository


 Find Jar
http://www.findjar.com/


 Ivy专栏
http://www.iteye.com/wiki/ivy


 Apache Ivy
2012-6-20                                杭州斯凯网络科技有限公司   42
提问与讨论




2012-6-20   杭州斯凯网络科技有限公司   43

Mais conteúdo relacionado

Mais procurados

Liferay环境搭建
Liferay环境搭建Liferay环境搭建
Liferay环境搭建donotbeevil
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告ahnlabchina
 
2021.laravelconf.tw.slides3
2021.laravelconf.tw.slides32021.laravelconf.tw.slides3
2021.laravelconf.tw.slides3LiviaLiaoFontech
 
Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程kangzj
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile ServicesKuo-Chun Su
 
Big Java, Big Data
Big Java, Big DataBig Java, Big Data
Big Java, Big DataKuo-Chun Su
 
Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門Justin Lin
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing江華 奚
 
Debugging - 前端工程開發實務訓練
 Debugging - 前端工程開發實務訓練 Debugging - 前端工程開發實務訓練
Debugging - 前端工程開發實務訓練Joseph Chiang
 
Hadoop开发者入门专刊
Hadoop开发者入门专刊Hadoop开发者入门专刊
Hadoop开发者入门专刊liangxiao0315
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)Joseph Chiang
 
Java Web动态图表编程
Java Web动态图表编程Java Web动态图表编程
Java Web动态图表编程yiditushe
 
前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練Joseph Chiang
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangmaclean liu
 
前端工程開發實務訓練
前端工程開發實務訓練前端工程開發實務訓練
前端工程開發實務訓練Joseph Chiang
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Kuo-Chun Su
 

Mais procurados (20)

Liferay环境搭建
Liferay环境搭建Liferay环境搭建
Liferay环境搭建
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告
 
2021.laravelconf.tw.slides3
2021.laravelconf.tw.slides32021.laravelconf.tw.slides3
2021.laravelconf.tw.slides3
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
 
Big Java, Big Data
Big Java, Big DataBig Java, Big Data
Big Java, Big Data
 
Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
 
Debugging - 前端工程開發實務訓練
 Debugging - 前端工程開發實務訓練 Debugging - 前端工程開發實務訓練
Debugging - 前端工程開發實務訓練
 
Jni文档
Jni文档Jni文档
Jni文档
 
Hadoop开发者入门专刊
Hadoop开发者入门专刊Hadoop开发者入门专刊
Hadoop开发者入门专刊
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
 
Jsp
JspJsp
Jsp
 
Java Web动态图表编程
Java Web动态图表编程Java Web动态图表编程
Java Web动态图表编程
 
前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練前端的未來 - 前端工程實務訓練
前端的未來 - 前端工程實務訓練
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
 
前端工程開發實務訓練
前端工程開發實務訓練前端工程開發實務訓練
前端工程開發實務訓練
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
 

Destaque

AñAdir Presentacion A Un Blog
AñAdir Presentacion A Un  BlogAñAdir Presentacion A Un  Blog
AñAdir Presentacion A Un Blogserginho7
 
ACSI 2010 Social media guide
ACSI 2010 Social media guideACSI 2010 Social media guide
ACSI 2010 Social media guideEsa Heiskanen
 
Pakistan flood victims 2010
Pakistan flood victims 2010Pakistan flood victims 2010
Pakistan flood victims 2010waterpakistan
 
Dramática
DramáticaDramática
DramáticaSandra
 
Introduction of android 4.x new api
Introduction of android 4.x new apiIntroduction of android 4.x new api
Introduction of android 4.x new apiAnson Yang
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Destaque (8)

AñAdir Presentacion A Un Blog
AñAdir Presentacion A Un  BlogAñAdir Presentacion A Un  Blog
AñAdir Presentacion A Un Blog
 
ACSI 2010 Social media guide
ACSI 2010 Social media guideACSI 2010 Social media guide
ACSI 2010 Social media guide
 
Pakistan flood victims 2010
Pakistan flood victims 2010Pakistan flood victims 2010
Pakistan flood victims 2010
 
Dramática
DramáticaDramática
Dramática
 
Introduction of android 4.x new api
Introduction of android 4.x new apiIntroduction of android 4.x new api
Introduction of android 4.x new api
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Semelhante a 基于Ivy ant的java构建初探

Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超drewz lin
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍Jim Jiang
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中Andrew Wu
 
项目开发实践No.1
项目开发实践No.1项目开发实践No.1
项目开发实践No.1pepsixp
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训ytsolar
 
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案ArBing Xie
 
项目自动化实施
项目自动化实施项目自动化实施
项目自动化实施dhlzj
 
Maven技术分享
Maven技术分享Maven技术分享
Maven技术分享wslfh2005
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲ArBing Xie
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
IoTDB Quick Start
IoTDB Quick StartIoTDB Quick Start
IoTDB Quick StartJialinQiao
 
Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解zany_hui
 
Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)beehivedata
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程yiditushe
 

Semelhante a 基于Ivy ant的java构建初探 (20)

OSGi Small Lab
OSGi Small LabOSGi Small Lab
OSGi Small Lab
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
项目开发实践No.1
项目开发实践No.1项目开发实践No.1
项目开发实践No.1
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
 
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案
 
项目自动化实施
项目自动化实施项目自动化实施
项目自动化实施
 
Maven技术分享
Maven技术分享Maven技术分享
Maven技术分享
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
Exodus2 大局观
Exodus2 大局观Exodus2 大局观
Exodus2 大局观
 
IoTDB Quick Start
IoTDB Quick StartIoTDB Quick Start
IoTDB Quick Start
 
1~60
1~601~60
1~60
 
Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解
 
Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)
 
RESTful
RESTfulRESTful
RESTful
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 

基于Ivy ant的java构建初探

  • 1. 基于Ivy/Ant的Java构建初探 统一系统部 杨剑 2012-6-20 杭州斯凯网络科技有限公司 1
  • 2. 选择Ivy的N个理由 使用Ivy 系统构建步骤 系统构建规范 Ivy Resources 2012-6-20 杭州斯凯网络科技有限公司 2
  • 3. Java构建的进化过程 直接在lib中添加jar包 初期 1. 直接使用IDE导出 2. 使用Ant来构建 定义userlibraries,包含jar包声明 过渡 1. 使用Ant构建 使用Ivy、Maven统一管理依赖 现在 1. 使用Ant+Ivy构建 2. 使用Maven构建 。。。。。。 未来 2012-6-20 杭州斯凯网络科技有限公司 3
  • 4. Apache Ivy Apache Ivy™ is a popular dependency manager focusing on flexibility and simplicity. Apache Ivy 是Apache Ant 下的一个子项目。是 一个优秀的管理(记彔、跟踪、解析和报告) 项目依赖的工具,提供了强大的依赖管理功 能,可与Apache Ant紧密集成。 2012-6-20 杭州斯凯网络科技有限公司 4
  • 5. 功能  能够和Apache Ant紧密集成  支持多个不同的依赖存储  依赖报告Dependency Reporting  支持持续集成  强大的冲突管理功能 reference:http://ant.apache.org/ivy/features.html 2012-6-20 杭州斯凯网络科技有限公司 5
  • 6. Ant+Ivy VS Maven Maven Ant+Ivy 概念 项目管理工具 项目构建工具 +依赖管理工具 标准构建文件 project.xml、maven.xml build.xml 标准依赖文件 pom.xml ivy.xml 学习成本 需要重新学习 目前项目中大多使用Ant 曲线比较大 构建,只需要接入Ivy 2012-6-20 杭州斯凯网络科技有限公司 6
  • 7. 谁在用  Spring Framework 2012-6-20 杭州斯凯网络科技有限公司 7
  • 8. 选择Ivy的N个理由 使用Ivy 系统构建步骤 系统构建规范 Ivy Resources 2012-6-20 杭州斯凯网络科技有限公司 8
  • 9. 环境安装  安装 ANT  配置环境变量:  ANT_HOME::D:Javadevapache-ant  PATH:%ANT_HOME%bin,(为了方便在命令行下操作)  下载Ivy 将下载的ivy安装包解压,然后复制ivy的jar文件到ant的 lib目彔下(ANT_HOME/lib)。 转到ivy解压的src/example/hello-ivy目彔并运行ant,检 验环境是否配置成功。 2012-6-20 杭州斯凯网络科技有限公司 9
  • 10. IDE集成  Eclipse Apache IvyDE  Intellij IDEA IvyIDEA Ivy Plugin 目前Eclipse的支持较好,其他IDE的支持正在改善中 2012-6-20 杭州斯凯网络科技有限公司 10
  • 11. 术语 术语 描述 Organisation 组织名 Module 模块 Module Descriptor 模块描述符 Artifact 制品 Type of an artifact 制品类型 Artifact file name extension 制品文件扩展名 Module Revision 模块修订版本 Branch 分支 Status of a revision 修订本状态 Configurations of a module 模块配置 Ivy Settings ivy设置 Repository 仓库 2012-6-20 杭州斯凯网络科技有限公司 11
  • 12. 2012-6-20 杭州斯凯网络科技有限公司 12
  • 13. 如何工作 2012-6-20 杭州斯凯网络科技有限公司 13
  • 14. 选择Ivy的N个理由 使用Ivy 系统构建步骤 系统构建规范 Ivy Resources 2012-6-20 杭州斯凯网络科技有限公司 14
  • 15. IvyDE设置  设置Ivy Settings Ivy settings path: http://stcdev.sky-mobi.com:8080/devconf/ivysettings.xml 2012-6-20 杭州斯凯网络科技有限公司 15
  • 16. build.xml <?xml version="1.0" encoding="UTF-8" ?> <!--ant 脚本文件 --> <project name="rop-mis" basedir="."> <!--设置下面要用到的属性--> <property name="module.name" value="${ant.project.name}" /> <property name="module.version" value="1.0.0" /> <property name="devconf.url" value="http://stcdev.sky-mobi.com:8080/devconf" /> <property name="app.buildfile" value="build-app.xml" /> <!-- import file="../allconf/${app.buildfile}" as=“impl"/ --> <import as="impl"> <url url="${devconf.url}/${app.buildfile}"/> </import> </project> 其中import标签,需要ant添加组件jar,可以到 https://svn2.sky-mobi.com:9991/svn/netdevpublic/TOOLS 下载已经集成的Ant 2012-6-20 杭州斯凯网络科技有限公司 16
  • 17. ivy.xml <?xml version="1.0" encoding="UTF-8"?> <ivy-module version="2.0“ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> <info organisation="skymobi.app" module="${module.name}" revision="1.0.0" status="release" publication="20101124120000"> <description homepage="http://stcdev.sky- mobi.com/redmine/projects/${module.name}"> Skymobi app:${module.name} </description> </info> <configurations> <conf name="compile" visibility="public"/> <conf name="test" visibility="private" extends="compile" /> <conf name="runtime" visibility="public" extends="compile" /> <conf name="develop" visibility="public" extends="compile" /> </configurations> 2012-6-20 杭州斯凯网络科技有限公司 17
  • 18. ivy.xml <publications> <artifact name="rop-mis" type="jar" ext="jar" conf="compile"/> <artifact name="rop-mis" type="source" ext="jar" conf="develop"/> <artifact name="rop-mis" type="javadoc" ext="jar" conf="develop"/> <artifact name="rop-mis" type="distribution" ext="zip" conf="runtime"/> </publications> <dependencies> <dependency org="skymobi.stc" name="stc-util" rev="latest.release" conf="compile"/> <dependency org="skymobi.stc" name="stc-bean" rev="latest.release" conf="compile"/> <dependency org="com.oracle" name="oracle-jdbc-classes12" rev="10.2.0.1.0" conf="runtime->default(*)"/> <dependency org="junit" name="junit" rev="4.8.2" conf="test->default(*)"/> <dependency org="skymobi.stc" name="stc-unit-repo" rev="snapshot" conf="compile" transitive="false" changing="true"/> <dependencies> </ivy-module> 2012-6-20 杭州斯凯网络科技有限公司 18
  • 19. ivy.xml 属性 描述 基数 info 包含被描述的模块的信息 1 configurations 配置元素的容器 0..1 publications 发布制品元素的容器 0..1 dependencies 依赖元素的容器 0..1 其中需要改变的是dependencies中的dependency标签,对依赖文件进行管理 属性 描述 是否必须 org 依赖的organisation名称 否,默认与模块organisation相同 name 依赖的module名称 是 rev 依赖的版本号 是 conf 内联映射配置 否 transitive true时,递归解析依赖 否,默认为true changing true时,依赖不受版本控制 否,默认false 2012-6-20 杭州斯凯网络科技有限公司 19
  • 20. 添加到classpath 1. 右键ivy.xml,Add Ivy Library 2. Classpath添加ivy依赖,选择项目->右键属性->Java Build Path->Libraries->Add Library...->IvyIDE Managed Dependencies->finish->OK 2012-6-20 杭州斯凯网络科技有限公司 20
  • 21. Demo  改造原有的项目  新建项目 2012-6-20 杭州斯凯网络科技有限公司 21
  • 22. 选择Ivy的N个理由 使用Ivy 系统构建步骤 系统构建规范 Ivy Resources 2012-6-20 杭州斯凯网络科技有限公司 22
  • 23. MIS  目彔结构 2012-6-20 杭州斯凯网络科技有限公司 23
  • 24. 目录结构 1. 程序目彔 2. 脚本目彔 目彔 描述 目彔 描述 srcmainjava 主程序 bsh BeanShell脚本 srcmainresource 主程序的配置文件 hyperic hyperic配置 srctestjava 测试程序 sh Shell脚本 srctestresource 测试程序的配置文件 sql Sql脚本 manifest MANIFEST.MF文件 3. 功能单元配置目彔 目彔 描述 private 私有单元配置文件 public 公有单元配置文件 2012-6-20 杭州斯凯网络科技有限公司 24
  • 25. Ant Task 根据build.xml中声明,import一个build-app.xml,该文件声明ant的 构建任务,svn地址: https://svn2.sky-mobi.com:9991/svn/netdevpublic/allconf/build- app.xml build-app.xml中声明的重要的Ant Task 任务 定义 依赖(depends) resolve 解析依赖 report 生成依赖报告 resolve init 初始化目彔 prepare-dep hudson构建的变量设置 … compile 执行编译Java文件 resolve、report、prepare-dep、init compile-test 执行编译Java测试文件 init clean-all 清理target目彔 2012-6-20 杭州斯凯网络科技有限公司 25
  • 26. Ant Task 任务 定义 依赖(depends) clean-deploy 清理classes目彔 run-test 运行测试用例 compile、compile-test jar 生成jar包 clean-all、compile、run-test jar-test 生成jar-test包 jar、compile-test source-jar 生成源码包 jar doc-jar 生成doc包 jar clean-deploy 清理classes目彔 make-bin 生成bin目彔 jar make-dist 生成项目zip make-bin、doc-jar publish-snapshot 发布snapshot版本 make-dist,jar,source-jar,doc-jar publish-release 发布release版本 make-dist,jar,source-jar,doc-jar 2012-6-20 杭州斯凯网络科技有限公司 26
  • 27. build-app.xml 使用ivy,最频繁的方式是在Ant构建文件中,如果使用的Ant为 1.6.0版本或以上,只需要添加ivy的命名空间到项目中(project标签的属 性) xmlns:ivy="antlib:org.apache.ivy.ant“ <project xmlns:ivy="antlib:org.apache.ivy.ant" > ivy setting <ivy:settings url="http://stcdev.sky-mobi.com:8080/devconf/ivysettings.xml" /> 如果不设置ivysetting,默认读http://ant.apache.org/ivy/history/latest- milestone/samples/ivysettings-default.xml 2012-6-20 杭州斯凯网络科技有限公司 27
  • 28. build-app.xml <target name="resolve" description="--> retreive dependencies with ivy"> <ivy:retrieve pattern="${module.target}/lib/[conf]/[artifact]-[revision]-[type].[ext]" conf="compile,test,runtime" type="jar,bundle" /> </target> ivy:retrieve任务复制解析好的依赖到你的文件系统的任何位置,它是 一个post resolve任务,拥有post resolve任务共有的所有的行为和属 性。 2012-6-20 杭州斯凯网络科技有限公司 28
  • 29. retrieve 属性 描述 必须 pattern 用来复制依赖的正则表达式 No,默认${ivy.retrieve.pattern} conf 用于获取配置的列表,逗号分隔 No, type 可以接受的制品类型 No,默认为所有类型都接受 pattern="${module.target}/lib/[conf]/[artifact]-[revision]-[type].[ext]“ 获取最后一次解析调用的所有依赖到lib目彔中,依赖将分隔在按照组织命 名的目彔中,每个conf目彔包含对应的带修订版本和制品类型依赖 conf="compile,test,runtime“ 声明了三个配置compile、test、runtime,那么lib目彔应该是这样的: lib compile stc-bean-1.0.6-jar.jar test stc-bean-1.0.6-jar.jar runtime stc-bean-1.0.6-jar.jar 2012-6-20 杭州斯凯网络科技有限公司 29
  • 30. post resolve tasks 在ivy中有几个任务被认为是后解析任务(post resolve task),并相应地共 享公用行为和设置。这些任务是:  retrieve  cachefileset  cachepath  artifactproperty (since 2.0)  artifactreport (since 2.0) 所有这些任务都将自动触发resolve 2012-6-20 杭州斯凯网络科技有限公司 30
  • 31. resolve 解析在ivy.xml文件中描述的依赖,并将解析后的依赖放置到ivy缓 存中。 ivy缓存默认为user.home/cache目彔,它通过下面的方式确定路 径: 1. 查找变量ivy.cache.dir 2. 如果没有找到,使用ivy.default.ivy.user.dir/cache ivy.default.ivy.user.dir默认情况使用user.home 所以要改变cache目彔,在build.xml设置 <property name="ivy.default.ivy.user.dir" value="D:ivy" /> 当ivy完成解析任务时,它将输出概要: 2012-6-20 杭州斯凯网络科技有限公司 31
  • 32. resolve Tag tag 模式 modules number 配置下被解析的依赖模块的总数目,包括间接的依赖 search 需要访问仓库的依赖模块的数目 dwnlded 从仓库下载的依赖模块的数目 evicted 冲突管理器筛选出依赖模块的数目 artifacts number 配置下被解析的制品的总数目 dwnlded 从仓库实际下载的制品数目 2012-6-20 杭州斯凯网络科技有限公司 32
  • 33. publish 发行当前模块的制品和已解析的描述符(模块声明的ivy文件) 目的是发行当前模块描述符和它声明的发行制品到仓库中,提供给其 他项目使用。 <ivy:publish resolver="share-release" artifactspattern="${release.dir}/[artifact]-[revision]-[type].[ext]" srcivypattern="${module.home}/ivy.xml" pubrevision="${module.version}" update="true" overwrite="true" status="release" /> 2012-6-20 杭州斯凯网络科技有限公司 33
  • 34. publish 属性 描述 必须 resolver 用来发行制品的解析器名称 是 No,默认 artifactspattern 用于查找发行制品的正则表达式 ${ivy.publish.src.artifacts.pattern} 用于查找发行制品ivy文件的正 No,默认与artifactspattern srcivypattern 则表达式 相同 pubrevision 用于发行的修订颁布 No,默认为${ivy.deliver.revision} true 时 在 发 行 前 更 新 ivy 文 件 的 No,默认为false update metadata,false相反 true时覆盖仓库中修订版本一样 No,默认为false overwrite 的文件,false相反 status 发行的status No,默认${ivy.status} publish-snapshot与publish-release,区别在于用的resolver, resolver 的声明在ivysettings.xml中可以找到。 2012-6-20 杭州斯凯网络科技有限公司 34
  • 35. WEB  目彔结构 2012-6-20 杭州斯凯网络科技有限公司 35
  • 36. 目录结构  目彔结构 术语 描述 src 程序目彔 resources 程序配置文件 WebContent(WebRoot) web目彔 2012-6-20 杭州斯凯网络科技有限公司 36
  • 37. build.xml <?xml version="1.0" encoding="UTF-8" ?> <project name="sup-cms" basedir="."> <!--property name="ivy.default.ivy.user.dir" value="D:ivy" /--> <!--设置下面要用到的属性--> <property name="module.name" value="${ant.project.name}" /> <property name="module.version" value="1.0.0" /> <!-- 不同IDE工程的Webcontent不同--> <property name="web.content" value="WebContent"/> <property name="devconf.url" value="http://stcdev.sky-mobi.com:8080/devconf" /> <property name="lib.buildfile" value="build-web.xml" /> <import file="build-web.xml" as="impl"/> <!--import as="impl"> <url url="${devconf.url}/${lib.buildfile}"/> </import--> </project> 2012-6-20 杭州斯凯网络科技有限公司 37
  • 38. Ant Task 任务 定义 依赖(depends) resolve 解析依赖 report 生成依赖报告 resolve init 初始化目彔 clean-all prepare-dep hudson构建的变量设置 … compile 执行编译Java文件 resolve、report、prepare-dep、init one-war 打war包 compile make-dist 把项目打成zip one-war clean-all 清理target目彔 clean-deploy 清理classes目彔 2012-6-20 杭州斯凯网络科技有限公司 38
  • 39. build-web.xml resolve和report target与mis端声明类似。 其中比较重要,也需要注意的就是打war包,其中classes目彔不使用 WEB-INF自动生成的,而是使用通过compile出来classes。 <target name="one-war" depends="compile"> <war warfile="${dist.war}/${module.name}.war" webxml="${module.webxml}" manifest="${web.content}/META-INF/MANIFEST.MF"> <fileset dir="${web.content}"> <include name="**/*.*"/> <exclude name="**/web.xml"/> <exclude name="**/classes/**"/> </fileset> <classes dir="${module.classes}"/> <lib dir="${compile.lib}/runtime"> <include name="**/*.jar"/> </lib> 2012-6-20 杭州斯凯网络科技有限公司 39
  • 40. build-web.xml <manifest> <attribute name="Specification-Title" value="${module.name}"/> <attribute name="Specification-Version" value="${module.version}"/> <attribute name="Implementation-Title" value="${module.name}"/> <attribute name="Implementation-Version“ value="${module.version}- ${dist.build.number}-${dist.build.id}-[${dist.revision}]"/> <attribute name="Specification-Vendor" value="SKY NETWORK TECHNOLOGIES CO.,LTD"/> <attribute name="Implementation-Vendor" value="SKY NETWORK TECHNOLOGIES CO.,LTD"/> </manifest> </war> </target> 2012-6-20 杭州斯凯网络科技有限公司 40
  • 41. 选择Ivy的N个理由 使用Ivy 系统构建步骤 系统构建规范 Ivy Resources 2012-6-20 杭州斯凯网络科技有限公司 41
  • 42. Ivy Resources  Java开发库管理平台(公司) http://stcdev.sky-mobi.com:8080/nexus/  Mvn Repositories  Mvnrepository  IBiblio maven repository  JBoss Maven Repository  Find Jar http://www.findjar.com/  Ivy专栏 http://www.iteye.com/wiki/ivy  Apache Ivy 2012-6-20 杭州斯凯网络科技有限公司 42
  • 43. 提问与讨论 2012-6-20 杭州斯凯网络科技有限公司 43