[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.pde] Re: Trying to have automated PDE build for large RCP
|
Hello Mohamed,
Hello,
I am trying to setup an automated PDE build for a large RCP project,
but I am getting a lot of issues.
I have tried a smaller application with less dependencies and it
worked fine.
The main areas I am having issues with are:
1- Setting correct feature definitions for the product (I will post
about
this separately) but the question here. Is it required to have my
product
depends on featurs, or can it work with plugins? (I don't need p2
update)
You can get away with plugins but I wouldn't recommend it. It will be
easier if you use features. It's relatively easy to define features.
The only issue is that we have to update them when we change target platform.
Fortunately it doesn't happen very often so it's not a big problem.
2- Target Platform dependency
I have setup my target platform in separate directories: 1 folder
contains eclipse sdk, another contains delta-pack, another one contains
CDT,
other contains other plugins, ...
Same here. We have directory that represent target platform. It's structure
looks like this:
workspace
+-target_platform_project
+- features
+- plugins
+- deltapack
+- sources
+-
+- spring
+- plugins
+- ... springsource bundles ....
+- slf4j
+- jcl-over-slf4j
+- .....
+-hibernate
+....
+....
This directory layout can be built from an ant script or by hand and checked
into the repository
(that's the easiest way to give common platform to all developers on the
project).
features and plugins are from eclipse RCP SDK. Notice that you don't have
to use this layout.
You could be more consistent and have:
workspace
+-target_platform_project
+ RCP_SDK
+- features
+- plugins
.....
+- deltapack
+- sources
+-
....
I don't understand what does the baseLocation property mean in that
case?
It represents directory containing prebuilt features and plug-ins against
which the product is compiled and assembled.
In the example above it would be path to: ${workspace}/target_platform_project
since it contains features and plugins folders from eclipse RCP SDK that
we compile against.
it is currently pointing to the eclipse sdk folder, and I am getting
errors about missing dependencies (CDT).
I tried to set the pluginPath variable to contain the directories
containing my plugins in addition to all the target platform directories,
but it doesn't seem to have an effect.
a. Do I need to "install" all the dependencies in the eclipse platform
installation? Can't I keep it in separate folders?
You're right. pluginPath should be enough. You have to set it up correctly.
For example, in our build file we use something like this to set pluginPath:
<path id="target.platform.plugins">
<fileset dir="${baseLocation}/slf4j">
<include name="*.jar"/>
</fileset>
<fileset dir="${baseLocation}/spring-security/plugins">
<include name="*.jar"/>
</fileset>
<fileset dir="${baseLocation}/spring/plugins">
<include name="*.jar"/>
</fileset>
<!-- ...... -->
<fileset dir="${baseLocation}/openoffice">
<include name="**/*.jar"/>
</fileset>
<pathelement location="${baseLocation}/deltapack/eclipse"/>
</path>
<property name="pluginPath" refid="target.platform.plugins"
description="A platform path-separator separated list of locations to find
additional plug-ins and features." />
Also, we do not use feature based build since we're building a product so
instead of importing
<import file="${eclipse.pdebuild.scripts}/build.xml" />
we import
<import file="${eclipse.pdebuild.scripts}/productBuild/productBuild.xml" />
You have to be careful with pluginPath and not forget something... I guess
the easiest way would be to have an ant task that would import .target definition
but unfortunately I think there is no such task.
2. Must I copy my plugins and features into the plugins and features
directories in the build area, or can I use pluginPath to avoid that?
I thought from Andrew's post
http://aniefer.blogspot.com/2008/06/example-headless-build-for-rcp-product.html
that pluginPath can eliminate that need.
You have to copy all your plugins and features that you intend to build.
If you have prebuilt artifacts in your artifact repository (like nexus) or
directory, you can add them to the pluginPath as above and it should work.
--
Ivica Loncar