我的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>