`

ant学习3

    博客分类:
  • ant
阅读更多
通常我们打包Product的时候,一般都是通过Product的export操作来进行的,但这样的做法,则限制了Continous Integration的自动化执行,那么,应该如何编写自动化构建脚本呢?

一、首先,让我们看一下Eclipse官方的解决方案:

http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tasks/pde_product_build.htm

从 文中我们可以看出,PDE已经为从product文件构建RCP应用做好了一切准备,我们所需要做的,就是搭建目录结构以及构建脚本。但是如果完全按照官 方方案去做的话,只会使得构建更加复杂,更加不可自动化,那么,让我们跟随一个简单的例子来看一下如何完成自动构建吧(在下使用的是 Eclipse3.2,pde的版本号为3.2.0.v20060603,使用其他版本的朋友请自行修改):

1。 使用Hello RCP模版构建一个RCP工程。命名为hellorcp,创建到G:\eclipse\workspace\hellorcp

在这一步,有一个很关键的问题需要注意,我们先来看一下上文中build directory的结构:

buildDirectory/  
    plugins/  
        pluginToBuildA  
        pluginToBuildB  
            myProduct.product  
        ...  
    features/  
        featureToBuild  

要想成功build工程的话,那么工程就必须要放到/plugins/的目录结构下,不然pde是找不到工程的plugin id的!我努力了很长时间才无奈的认可了这个事实。

如果我们不想把工程放到一个很复杂的目录结构下,或者对于既有的工程不想做这样的改动,那么就只好用到ant来拷贝了。我的做法是,在工程目录下,创建名为dist\plugins\hellorcp的目录,待一切就绪后,使用ant来把整个工程拷贝到这个目录下。

2。准备脚本

在 工程下,新建buildConfiguration目录,并把\plugins\ org.eclipse.pde.build_3.2.0.v20060603\templates\headless-build下的 build.properties文件拷贝到此目录下,并修改如下设置项:

1).product—— 官方的说法是:the location of your product configuration file in the form "/ /path/to/.product",而我们的buildConfiguration目录和 product文件同处于一个目录下,所以只需要写上product文件的名字即可,如hellorcp.product。
2).baseLocation——官方的说法是:the location of an eclipse install containing all the pre-built features and plug-ins that your product requires in features/ and plugins/ subdirectories. The RCP delta pack (it is available from the eclipse download page) is mandatory as it includes the org.eclipse.platform.launchers feature which contains the launchers and root files necessary for a product. 我们要做的就是把RCP delta pack安装到Eclipse目录下,然后把base location指向Eclipse根目录即可,这里需要绝对路径。
3).buildDirectory——官方的说法是:the directory the build will take place in. Set this to the full path of the build directory created previously. 这里因为最后的目录指向是ant拷贝完成以后的路径,所以应当是G:\eclipse\workspace\hellorcp\dist
4).configs—— list the configurations for which you want your product to be built. You can uncomment the configuration(s) provided (be careful of the line continuations).
5).archivePrefix—— the name of the directory of your product once installed on disk. 如hellorcp
以上为官方给出的配置项,而我们如果使用了1.5或1.6中的新功能的话,还需要到文件的最底部,找到javacSource和javacTarget两个选项,进行对应的修改。

3。ant脚本

在工程目录下新建一个ant脚本,把下面的代码粘贴进去,运行,就可以到dist/I.TestBuild下面找构建后的产品了。


xml version="1.0"?>  
<project name="project" default="rcpAutomatedBuild">  
    <property name="eclipse.install" value="G:\eclipse">  
    property>  
    <property name="project.dir" value="G:\eclipse\workspace\hellorcp">  
    property>  
    <property name="dist.dir" value="${project.dir}\dist\plugins\hellorcp" />  
    <target name="prepare">  
        <mkdir dir="${dist.dir}" />  
        <copy todir="${dist.dir}">  
            <fileset dir="${project.dir}">  
            fileset>  
        copy>  
    target>  
    <target name="rcpAutomatedBuild" depends="prepare">  
        <java classname="org.eclipse.core.launcher.Main" fork="true" failonerror="true">  
            <arg value="-application" />  
            <arg value="org.eclipse.ant.core.antRunner" />  
            <arg value="-buildfile" />  
            <arg value="${eclipse.install}\plugins\org.eclipse.pde.build_3.2.0.v20060603\scripts\productBuild\productBuild.xml" />  
            <arg value="-Dbuilder=${dist.dir}\buildConfiguration" />  
            <classpath>  
                <pathelement location="${eclipse.install}\startup.jar" />  
            classpath>  
        java>  
    target>  
project>  

构建后的产品是以zip形式存在的,我们还可以根据实际的需要,对build.properties进行更多的修改。

上面的脚本还有一些缺陷,比如绝对位置的使用,但这是无法避免的了.......

二、接下来是使用Maven的构建:

使用Maven的准备工作包括下载,配置环境变量,安装Maven plugin for Eclipse,并在Preferences中,Java/Build Path/Classpath Variables/下面配置M2_REPO变量,使其指向userhome\.m2\repository

关于Maven的入门知识在此略过,请自行阅读Maven官方站点的相关资料。

在创建工程时,请将src目录指向src/main/java,output目录指向target/classes

工 程创建完毕后,右击工程名,在弹出菜单中选中“Maven2“,然后选择”Enable“,则会生成对应的pom文件,我们可以自己设置对应的 groupid,artifactId,以及相应的dependencies,在这里,我们只需要为Eclipse插件依赖以外的第三方包设置 dependency就可以了。如果该包在官网上无法访问到,则可以通过运行

mvn install:install-file -Dfile=path-to-your-artifact-jar \
-DgroupId=your.groupId \
-DartifactId=your-artifactId \
-Dversion=version \
-Dpackaging=jar \
-DgeneratePom=true

来把第三方包安装到local repository里面去。

然 而,在plugin project运行时,除了Eclipse插件依赖以外的第三方包是需要位于plugin目录下的,否则在运行时无法找到对应路径,我们也可以看到,在 plugin.xml视图的runtime页面中,根本无法把plugin目录以外的jar文件加入到classpath中来。所以,我们还需要另外的 ant脚本来完成拷贝工作。脚本如下所示:(此处参考了江南白衣,有一点不同的是,此处把ant的classpath指向了local repository,这样发布的时候,就无需发布maven-artifact-ant.jar了)


xml version="1.0" encoding="UTF-8"?>  
<project name="build-base" default="copy" xmlns:artifact="urn:maven-artifact-ant">  
    <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant">  
        <classpath>  
            <pathelement location="${user.home}/.m2/repository/org/apache/maven/maven-artifact-ant/2.0.4/maven-artifact-ant-2.0.4.jar" />  
        classpath>  
    typedef>  
    <artifact:pom id="maven.project" file="pom.xml" />  
    <artifact:dependencies filesetId="dependency.fileset" useScope="runtime">  
        <pom refid="maven.project"/>  
    artifact:dependencies>  
    <target name="copy">  
        <copy todir="lib">  
            <fileset refid="dependency.fileset" />  
            <mapper type="flatten" />  
        copy>  
    target>  
project>  


接下来的目录结构及脚本的准备工作和前面一样,除了两处需要修改:

1)buildConfiguration\build.properties, 这里的buildDirectory可以注释掉。
2)第3步中的ant脚本,因为我们这里需要用maven来构建,所以只需要执行prepare任务就可以了。

再有就是pom.xml文件中,要加入构建的任务:


<build>  
    <plugins>  
      <plugin>  
        <groupId>org.codehaus.mojogroupId>  
        <artifactId>pde-maven-pluginartifactId>  
        <extensions>trueextensions>  
        <configuration>  
          <eclipseInstall>G:\eclipseeclipseInstall>  
          <pdeProductFilename>hellorcp.productpdeProductFilename>  
          <pdeBuildVersion>3.2.0.v20060603pdeBuildVersion>  
        configuration>  
      plugin>  
    plugins>  
  build>  


最后运行第3步中的ant脚本,然后到dist\plugins\hellorcp目录下,运行mvn install就可以了。构建后的文件可以在local repository中找到。

常见错误:

使用ant build的时候,出现plugin:xxx找不到的错误,请检查buidConfiguration\build.properties中buildDirectory的配置项
使用Maven build的时候,出现编译错误,请检查pom.xml中是否少了




<packaging>zip</packaging>  
分享到:
评论

相关推荐

    ANT学习资料.docx

    ANT学习资料,我在学习ANT查找的一些资料,进行汇总

    ant学习测试工程源码

    【标题】"ant学习测试工程源码"是一个Java开发的学习项目,主要目的是教授如何使用Apache Ant作为构建工具来管理基于Spring、Hibernate和JUnit的软件工程。Ant是一个流行的开源构建工具,它允许开发者通过XML配置...

    ANT初步运行例子,ANT学习

    在“ANT初步运行例子,ANT学习”这个主题中,我们将深入了解Ant的工作原理和基本用法。 Ant是基于XML的,其核心概念是构建文件(build.xml),这个文件包含了构建过程的所有步骤和指令。在提供的文件列表中,"hello...

    Ant权威指南(ant 学习)

    《Ant权威指南》是一本深度解析Apache Ant...通过学习《Ant权威指南》,开发者可以全面掌握Ant的使用,提升构建效率,确保项目的稳定和可维护性。无论你是初学者还是经验丰富的开发者,这本书都将为你提供宝贵的指导。

    Ant 1.9.1 学习笔记

    Ant 1.9.1是Ant的一个版本,学习笔记通常记录了使用该工具的基本操作和配置方法。 ### Ant的下载和安装 要使用Ant,首先需要下载并安装。在Windows系统中,通常需要配置环境变量以便于命令行中使用Ant命令。ANT_...

    Ant学习资料大全全全全全

    本资源包包含了丰富的Ant学习资料,涵盖了从基础到进阶的各个层面。 首先,我们来看《Ant Manual.chm》。这是一份官方的帮助文档,包含了Ant的所有命令、任务和属性的详细说明。用户可以通过查阅这个手册,快速了解...

    Ant培训全套学习教程

    《Ant培训全套学习教程》是一份全面覆盖Ant工具学习的资源集合,旨在帮助开发者深入了解和熟练运用Ant进行软件构建。Ant是Apache软件基金会的一个开放源代码项目,它是一款基于Java的构建工具,常用于管理Java项目的...

    Ant入门学习手册(java ant教程)

    ### Ant入门学习手册:深入解析Java项目构建利器 #### Ant:Java项目构建的灵活与高效之选 在软件开发领域,构建工具扮演着至关重要的角色,它们负责将源代码及其它资源转换为可执行文件或产品镜像。Ant,作为一款...

    AntDesign学习手册

    AntDesign学习手册 Ant Design是一款基于React的前端UI组件库,可以帮助开发者快速开发Web前端应用。在本学习手册中,我们将详细介绍Ant Design的设计理念、基本概念、核心组件、实践经验等相关知识点。 设计理念 ...

    ant 学习与总结

    ### Apache Ant 学习与总结 #### 一、Ant 是什么? Apache Ant 是一款基于 Java 的构建工具,用于将源代码和其他输入文件转换为可执行文件或安装包等形式。随着软件项目的复杂度增加,确保每次构建都能使用相同的...

    ant学习之集成svn

    标题“ant学习之集成svn”涉及的是在Java项目中使用Apache Ant工具来集成Subversion(SVN)版本控制系统的过程。Apache Ant是一个Java库和命令行工具,它的设计目的是驱动构建过程,而Subversion则是一种广泛使用的...

    ant_学习笔记

    ### ant学习笔记:深入了解ant构建工具 #### 引言 `ant`,作为一款源自动网络的学习笔记,主要探讨了Apache Ant这一强大的构建工具。Apache Ant是一款开源的、跨平台的构建工具,专为Java应用程序设计,旨在简化并...

    打包工具 Ant 学习指南

    《Ant构建工具学习指南》 Ant,全称为Apache Ant,是Apache软件基金会开发的一个开源项目,主要用于Java应用程序的构建过程。作为一个基于Java的build工具,Ant以其灵活性、可移植性和强大的功能,在Java开发者中广...

    ant学习指南 ANT是一个基于Java的自动化脚本引擎

    Ant,全称Apache Ant,是一个基于Java的构建工具,它以XML格式定义构建脚本,使得构建过程在不同平台上保持一致。...通过学习和实践,开发者可以创建出符合项目需求的高效构建脚本,提高开发效率和项目的可维护性。

    Ant学习配套电子书

    《Ant学习配套电子书》包含了丰富的Ant工具学习资源,旨在帮助Java开发者深入理解和掌握这个强大的构建工具。Ant是由Apache软件基金会开发的一个开放源代码项目,主要用于自动化Java项目的构建过程,如编译、打包、...

    Ant学习例子

    在“Ant学习例子”中,我们将探讨如何使用Ant进行Java应用的打包操作。打包是软件开发过程中的一个重要环节,它将源代码编译后的类文件以及其他资源文件整合成一个或多个可分发的格式,例如JAR或WAR文件。通过Ant,...

    ant脚本资料ant

    3. **Ant常用任务** - **javac任务**:用于编译Java源代码,可以设置源和目标兼容性级别,以及处理错误和警告的方式。 - **copy任务**:用于复制文件或目录,可以进行过滤和重命名操作。 - **jar任务**:创建Java...

    Ant基本应用教程学习

    - XML构建文件:Ant使用纯XML编写的脚本文件(通常是build.xml),这使得Ant易于学习和扩展。 - 可扩展性:Ant拥有丰富的内置任务和类型,同时支持开发者自定义任务,以满足特定构建需求。 - 预定义任务和类型:Ant...

    Vue+Ant Design Vue学习经验分享1.doc

    3. Ant Design Vue学习分享 3.1 介绍 3.2 环境搭建 3.3 官方文档如何看 3.4 性能测评 3.5 如何嵌套其它非Vue页面 3.6 如何自定义封装标签例子 3.7 前后端分的离数据怎么交互 4. VUE2.0学习路线分享

Global site tag (gtag.js) - Google Analytics