"build_extension.xml improvement"
jpercent
New Altair Community Member
Hello everyone, I had a problem building my fisher-price RapidMiner extension. Fixed the problem, but it was annoying and I think the build files can be improved.
My adventure follows. I checked out the RapidMiner_Unuk branch and renamed it rapid-miner - if you're building an extension this will give you a headache. I also created my extension in a directory that is not a sibiling of the RapidMiner_Unuk.
*stark*
Relative path names are hard-coded in the build files!
The fix is to use an env. var like Java does with JAVA_HOME. You could even created a hard-coded default and then look for JAVA_HOME. Anyway, I created RM_HOME and changed the hard-coded references in extension-dir/build.xml and RapidMiner_Unuk/build_extension.xml. Below is the diff from RapidMiner_Unuk/build_extension.xml.
This fix will help reduce copious ibuprofen consumption and make the world a better place.
Best,
James Percent
james@syndeticlogic.net
Index: build_extension.xml
===================================================================
--- build_extension.xml (revision 844)
+++ build_extension.xml (working copy)
<project name="buildExtension" xmlns:ac="antlib:net.sf.antcontrib">
- <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" classpath="../RapidMiner_Unuk/ant/ant-contrib-1.0b3.jar" />
+ <property environment="env"/>
+ <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" classpath="${env.RM_HOME}/ant/ant-contrib-1.0b3.jar" />
<property file="build.properties" />
-
+
<property name="extension.updateServerId" value="rmx_${extension.namespace}" />
<property name="rm.ant" location="${rm.dir}/ant" />
<taskdef onerror="fail" resource="org/freecompany/redline/ant/antlib.xml" classpath="ant/redline-1.1.3.jar" />
<!-- FOR Tasks -->
- <taskdef onerror="fail" resource="net/sf/antcontrib/antlib.xml" classpath="../RapidMiner_Unuk/ant/ant-contrib-1.0b3.jar" />
+ <taskdef onerror="fail" resource="net/sf/antcontrib/antlib.xml" classpath="${env.RM_HOME}/ant/ant-contrib-1.0b3.jar" />
<!-- SCP Tasks -->
<copy file="ant/jsch-0.1.42.jar" todir="${ant.library.dir}" failonerror="false" />
My adventure follows. I checked out the RapidMiner_Unuk branch and renamed it rapid-miner - if you're building an extension this will give you a headache. I also created my extension in a directory that is not a sibiling of the RapidMiner_Unuk.
*stark*
Relative path names are hard-coded in the build files!
The fix is to use an env. var like Java does with JAVA_HOME. You could even created a hard-coded default and then look for JAVA_HOME. Anyway, I created RM_HOME and changed the hard-coded references in extension-dir/build.xml and RapidMiner_Unuk/build_extension.xml. Below is the diff from RapidMiner_Unuk/build_extension.xml.
This fix will help reduce copious ibuprofen consumption and make the world a better place.
Best,
James Percent
james@syndeticlogic.net
Index: build_extension.xml
===================================================================
--- build_extension.xml (revision 844)
+++ build_extension.xml (working copy)
<project name="buildExtension" xmlns:ac="antlib:net.sf.antcontrib">
- <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" classpath="../RapidMiner_Unuk/ant/ant-contrib-1.0b3.jar" />
+ <property environment="env"/>
+ <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" classpath="${env.RM_HOME}/ant/ant-contrib-1.0b3.jar" />
<property file="build.properties" />
-
+
<property name="extension.updateServerId" value="rmx_${extension.namespace}" />
<property name="rm.ant" location="${rm.dir}/ant" />
<taskdef onerror="fail" resource="org/freecompany/redline/ant/antlib.xml" classpath="ant/redline-1.1.3.jar" />
<!-- FOR Tasks -->
- <taskdef onerror="fail" resource="net/sf/antcontrib/antlib.xml" classpath="../RapidMiner_Unuk/ant/ant-contrib-1.0b3.jar" />
+ <taskdef onerror="fail" resource="net/sf/antcontrib/antlib.xml" classpath="${env.RM_HOME}/ant/ant-contrib-1.0b3.jar" />
<!-- SCP Tasks -->
<copy file="ant/jsch-0.1.42.jar" todir="${ant.library.dir}" failonerror="false" />
Tagged:
0
Answers
-
Hey James,
You are right. The two hard-coded references in the "build_extension.xml" are ... yeah! Let us not talk about this! I have fixed that and if you are using the RapidMiner version from the sourceforge SVN this should be synced until tomorrow. Nevertheless you should not use ${env.RM_HOME} but ${rm.dir} like it is done everywhere else in "build_extension.xml". This property should be defined in the "build.xml" file of your extension.
Best
Marcin0 -
Awesome!0