Eclipse RCP:尝试将插件的构建脚本添加到现有的rcp构建脚本中

时间:2016-04-26 10:12:16

标签: eclipse plugins ant eclipse-rcp pde

我的eclipse rcp已经存在且正在工作(ANT,PDE)。

现在我有另一位开发者为这个rcp产品开发插件。

我有以下新要求:

新开发人员的插件应该是现有构建过程的一部分,但我不允许简单地添加新的源代码并从中构建。 (我以前做过,工作得很好!)

我希望用一个尚不存在的构建脚本构建新开发人员的插件。我发现在没有IDE的情况下构建插件的方法是定义一个ANT文件:

<?xml version="1.0" encoding="UTF-8"?>
<project default="plugin_export" name="build">
    <target name="plugin_export">
        <pde.exportPlugins destination="\export\" exportSource="false" exportType="directory" plugins="com.some.plugin" useJARFormat="true"/>
    </target>
</project>

我可以从命令行构建这个插件:

java.exe -jar
 "C:\Program Files\Eclipse_3.7.2_WIN32\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar"
 -application org.eclipse.ant.core.antRunner
 -f "D:\source\com.new.plugin\build.xml"
 -data "D:\elipse_workspace"

所以基本上我指的是equinox启动器,antRunner,构建文件和 eclipse工作区,其中包含插件源的路径。

因此,当我的工作空间包含具有源的项目的位置时,我只能构建其他开发人员的插件。我不明白为什么我不能直接从源码构建?在构建服务器上使用工作区文件夹几乎是不可能的。

由于我无法理解如何获取 -data 参数,我正在考虑将新插件的构建脚本添加到我现有的产品构建中,但我不知道甚至知道从哪里开始,因为我对PDE一无所知。

所以这是我现有的(ANT,PDE)构建:我如何解决我的问题?

<!--
    Ant Build file for ****
-->
<project name="com.my.package.name.build" default="buildFull">
    <property file="build.properties" />


    <!--
        PDE Build for *****

        init step

        Create Build directories and copy all plugins and features
    -->
    <target name="init">
        <property name="resPath" location="${ant.file}/../../resources"/>       
        <mkdir dir="${buildDirectory}" />
        <mkdir dir="${buildDirectory}/plugins" />
        <mkdir dir="${buildDirectory}/features" />

        <!-- Copy all plugins into a source folder-->
        <copy todir="${buildDirectory}/plugins">
            <fileset dir="../..">
                <include name="**" />
                <exclude name="*/bin/" />
                <exclude name="*.feature/**" />
            </fileset>
        </copy>


        <!-- Features -->
        <copy todir="${buildDirectory}/features">
            <fileset dir="../..">
                <include name="*.feature/**" />
            </fileset>
        </copy>
    </target>

    <!--
        Start PDE Build
    -->
    <target name="pde-build">
        <java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
            <arg value="-application" />
            <arg value="org.eclipse.ant.core.antRunner" />
            <arg value="-buildfile" />
            <arg value="${eclipseLocation}/plugins/org.eclipse.pde.build_${pdeBuildPluginVersion}/scripts/productBuild/productBuild.xml" />
            <arg value="-Dtimestamp=${timestamp}" />
            <classpath>
                <pathelement location="${eclipseLocation}/plugins/org.eclipse.equinox.launcher_${equinoxLauncherPluginVersion}.jar" />
            </classpath>
        </java>
    </target>

    <!--
        Clean Build directory
    -->

    <target name="clean">
        <!-- <delete dir="${buildDirectory}" /> -->
    </target>

    <target name="build" depends="clean, init, pde-build" />

    <!-- ================================= 
          target: buildFull              
         ================================= -->
    <target name="buildFull" depends="build" description="Builds until executable version is available">
        <available file="${buildDirectory}/${buildLabel}/${buildId}-${baseos}.${basews}.${basearch}.zip" property="buildZipOK"/>
        <antcall target="unzipBuildOutputAndCopyExe"/>
    </target>

    <!-- - - - - - - - - - - - - - - - - - 
          target: unzipBuildOutput                      
         - - - - - - - - - - - - - - - - - -->
    <target name="unzipBuildOutputAndCopyExe" if="buildZipOK">
        <!-- unzip file  -->
         <unzip src="${buildDirectory}/${buildLabel}/${buildId}-${baseos}.${basews}.${basearch}.zip" dest="${buildDirectory}/${buildLabel}/${buildId}-${baseos}.${basews}.${basearch}"/>                    
    </target>

</project>

0 个答案:

没有答案