命令行拉起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包

原文地址:https://www.cnblogs.com/simoncook/p/2475928.html