zoukankan      html  css  js  c++  java
  • 命令行拉起build Eclipse 插件

    命令行拉起build Eclipse 插件

    Eclipse的插件打包采用了Eclipse PDE提供的build能力。

    The Plug-in Development Environment (PDE) provides tools to create, develop, test, debug, build and deploy Eclipse plug-ins, fragments, features, update sites and RCP product

    Build - Ant based tools and scripts to automate build processes

    更详细的帮助文档参见Eclipse提供的Plug-in Development Environment Guide.

    对于Build主要参见Tasks/PDE Build目录

    有三个步骤,是准备build环境,build feature和安装插件且集成产品包。

    准备Build环境

    参见Automated Building of RCP applications from a product configuration file.

    文档中写到,准备的build环境要是如下目录结构。

    <buildDirectory>/

          plugins/

                pluginToBuildA

                pluginToBuildB

                      myProduct.product

                ...

          features/

                featureToBuild

                ...

    <buildConfiguration>/

    我将我本地建好的一个目录结构截图如下,注意,plugins和features的结构必须是这样的层次和结构,不能变动.

    将你要build的features和plugins拷贝至相应的目录。

    将Eclipse/IDE plugins目录的PDE build插件提供headless模板中的build.properties文件拷贝至buildConfiguration目录。

    build.properties模板文件所在路径类似于:

    eclipse/plugins/org.eclipse.pde.build_3.7.0.v20111116-2009/templates/headless-build

    Build feature

    参见Eclipse帮助的Automated Building of Features目录

    这个分成两步

    1. 修改步骤1中拷贝至buildConfiguration目录的build.properties文件

    buildDirectory = buildDirectory

    # 這個路徑是 *Target Platform* 的 eclipse home,

    # 內有現成的 plugins 與 fetures 兩個 directory

    baseLocation = target_pathform/eclipse

    # 這些步驟我們沒有做,所以要 skip

    skipBase=true

    skipFetch=true

    # 若果是 true 的話,閣下 feature 內的 feature.xml 所提到

    # Target Platform 的所有 plugins 與 features 都會被複製出來

    runPackager=true

    # PDE 完事後,就會在 buildDirectory 建立這個 folder,

    # 將結果放進去

    buildLabel = build_result

    # 最後製成品的名稱是 ${feature name}-${buildId}.zip

    buildId=20100523

    # Java 版本

    javacSource = 1.6

    javacTarget = 1.6

    logExtension=.log

    javacDebugInfo=ture

    javacFailOnError=true

    javacVerbose=true

    1. 用命令行执行build feature的动作

    下面是一个示例,你只需要讲相应的插件和路径更新成自己的。

    java -jar /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -application org.eclipse.ant.core.antRunner -buildfile /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20111116-2009/scripts/build.xml -Dbuilder=/Users/mac/803.eclipse.build/configDirectory

    执行完之后会有build是否成功的提示

    //========Update on 2012-09-15============

    1.  问题1

        [javac] Compliance level '1.4' is incompatible with target level '1.6'. A compliance level '1.6' or better is required

        [javac] Compilation failed. Compiler errors are available in /Users/mac/803.eclipse.build/buildDirectory/plugins/org.simon.core1/@dot.log

    BUILD FAILED

    /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20111116-2009/scripts/build.xml:36: The following error occurred while executing this line:

    这个问题一定要在build.properties文件中定义好这两个属性,书写不能有错误

    javacSource = 1.6

    javacTarget = 1.6

    build feature

    productBuild/productBuild.xml

    java -jar /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -application org.eclipse.ant.core.antRunner -buildfile /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20111116-2009/scripts/productBuild/productBuild.xml -Dbuilder=/Users/mac/803.eclipse.build/configDirectory

    java -jar /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -application org.eclipse.ant.core.antRunner -buildfile /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20111116-2009/scripts/build.xml -Dbuilder=/Users/mac/803.eclipse.build/configDirectory

    <echo message="123==${user.dir}" />

    <echo message="456==${builder}" />

    main:

         [echo] 123==/Users/mac/803.eclipse.build/buildDirectory/features

         [echo] 456==/Users/mac/803.eclipse.build/configDirectory

    mac-mini:eclipse mac$ grep "org.eclipse.ant.core.antRunner" * -R

    Binary file plugins/org.eclipse.pde.build_3.7.0.v20111116-2009/temp/org/eclipse/pde/internal/build/BuildApplication.class matches

    mac-mini:eclipse mac$

    -Xdebug -Xrunjdwp:transport=dt_socket,address=8500,server=y,suspend=n

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8500,server=y,suspend=y –jar  /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -application org.eclipse.ant.core.antRunner -buildfile /Users/mac/801.eclipse.dev/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20111116-2009/scripts/build.xml -Dbuilder=/Users/mac/803.eclipse.build/configDirectory

         protected void generateFeatures(List features) throws CoreException {

              AssemblyInformation assemblageInformation = null;

              BuildDirector generator = null;

              if (product != null) {

                   String replacement = QualifierReplacer.replaceQualifierInVersion("1.0.0.qualifier", "", null, null); //$NON-NLS-1$ //$NON-NLS-2$

                   productQualifier = new Version(replacement).getQualifier();

              }

    确定插件和feature的版本

    win + [  向后返回代码

    win + ]  向前返回

         public static String replaceQualifierInVersion(String version, String id, String replaceTag, Properties newVersions) {

              if (!AbstractScriptGenerator.getPropertyAsBoolean(IBuildPropertiesConstants.PROPERTY_PACKAGER_AS_NORMALIZER))

                   return version;

              if (!version.endsWith(PROPERTY_QUALIFIER))

                   return version;

    不是以qualifier 结尾的 即不会被替换版本

    outputUpdateJars = true    控制是否将feature 打成jar包

  • 相关阅读:
    Project Euler Problem 11: Largest product in a grid
    Project Euler Problem 10: Summation of primes
    Project Euler Problem 10: Summation of primes
    Project Euler Problem 9: Special Pythagorean triplet
    Project Euler Problem 9: Special Pythagorean triplet
    Project Euler Problem 8: Largest product in a series
    Project Euler Problem 8: Largest product in a series
    Project Euler Problem 7: 10001st prime
    Project Euler Problem 7: 10001st prime
    Project Euler Problem 48: Self powers
  • 原文地址:https://www.cnblogs.com/simoncook/p/2475928.html
Copyright © 2011-2022 走看看