[Yanel-commits] rev 42455 - in public: 0_tools/eclipse-3.settings yanel/trunk/src/build/resource-types

guillaume at wyona.com guillaume at wyona.com
Tue Apr 21 16:57:46 CEST 2009


Author: guillaume
Date: 2009-04-21 16:57:45 +0200 (Tue, 21 Apr 2009)
New Revision: 42455

Modified:
   public/0_tools/eclipse-3.settings/CLASSPATH2classpath.xslt
   public/0_tools/eclipse-3.settings/build.xml
   public/yanel/trunk/src/build/resource-types/Eclipse-3.template.project
   public/yanel/trunk/src/build/resource-types/resource-type.build.xml
Log:
On "Eclipse-ready" resource-types, `build -f eclipse:classpath -Ddo.autopatch.cnode1.webapp.WEB-INF.classes=foo` (also works with the "eclipse" target) forces Eclipse into patching freshly-recompiled classes directly in cluster node #1!

Issue: 6967

Modified: public/0_tools/eclipse-3.settings/CLASSPATH2classpath.xslt
===================================================================
--- public/0_tools/eclipse-3.settings/CLASSPATH2classpath.xslt	2009-04-21 14:44:59 UTC (rev 42454)
+++ public/0_tools/eclipse-3.settings/CLASSPATH2classpath.xslt	2009-04-21 14:57:45 UTC (rev 42455)
@@ -7,6 +7,8 @@
 <xsl:param name="Eclipse-classpath-doc-URL" select="'empty.classpath'"/>
 <xsl:param name="CLASSPATH" select="/*[1]/text()"/>
 <xsl:param name="CLASSPATH-separator" select="':'"/>
+<xsl:param name="source-dirs"/>
+<xsl:param name="classes-dir"/>
 
 
 <xsl:variable name="Eclipse-classpath-doc" select="document($Eclipse-classpath-doc-URL)"/>
@@ -18,17 +20,33 @@
 <xsl:template match="classpath" mode="classpath">
   <xsl:copy>
     <xsl:apply-templates select="@*" mode="classpath"/>
+    <!--xsl:comment><xsl:value-of select="$source-dirs"/></xsl:comment-->
+  <xsl:if test="$source-dirs">
+    <xsl:apply-templates select="str:split($source-dirs, ':')" mode="source-location"/>
+  </xsl:if>
     <xsl:apply-templates select="node()[not(name() = 'classpathentry' and (@kind = 'lib' or @kind = 'var'))]" mode="classpath"/>
     <xsl:apply-templates select="str:split($CLASSPATH, $CLASSPATH-separator)" mode="classpath-location"/>
   </xsl:copy>
 </xsl:template>
 
+<xsl:template match="*" mode="source-location">
+  <classpathentry kind="src" path="{text()}"/>
+<xsl:text>
+</xsl:text>
+</xsl:template>
+
 <xsl:template match="*" mode="classpath-location">
   <classpathentry kind="lib" path="{text()}"/>
 <xsl:text>
 </xsl:text>
 </xsl:template>
 
+<xsl:template match="classpathentry[@kind = 'src' and $source-dirs]" mode="classpath"/>
+
+<xsl:template match="classpathentry[@kind = 'output' and $classes-dir]" mode="classpath">
+  <classpathentry kind="output" path="{$classes-dir}"/>
+</xsl:template>
+
 <xsl:template match="@*|node()" mode="classpath">
   <xsl:copy>
     <xsl:apply-templates select="@*|node()" mode="classpath"/>

Modified: public/0_tools/eclipse-3.settings/build.xml
===================================================================
--- public/0_tools/eclipse-3.settings/build.xml	2009-04-21 14:44:59 UTC (rev 42454)
+++ public/0_tools/eclipse-3.settings/build.xml	2009-04-21 14:57:45 UTC (rev 42455)
@@ -43,6 +43,8 @@
       <param name="CLASSPATH" expression="${CLASSPATH}"/>
       <param name="Eclipse-classpath-doc-URL" expression="${classpath.template.file}"/>
       <param name="CLASSPATH-separator" expression="${CLASSPATH-separator}"/>
+      <param name="classes-dir" expression="${classes.dir}"/>
+      <param name="source-dirs" expression="${source.dirs}"/>
     </xslt>
 
     <!-- we need another intermediary file to swap the original file

Modified: public/yanel/trunk/src/build/resource-types/Eclipse-3.template.project
===================================================================
--- public/yanel/trunk/src/build/resource-types/Eclipse-3.template.project	2009-04-21 14:44:59 UTC (rev 42454)
+++ public/yanel/trunk/src/build/resource-types/Eclipse-3.template.project	2009-04-21 14:57:45 UTC (rev 42455)
@@ -14,4 +14,16 @@
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 	</natures>
+	<linkedResources>
+		<link>
+			<name>@YANEL_BUILD_CLASSES_DIR_LINK@</name>
+			<type>2</type>
+			<location>@YANEL_BUILD_CLASSES_DIR@</location>
+		</link>
+		<link>
+			<name>@CLASSES_DIR_LINK@</name>
+			<type>2</type>
+			<location>@CLASSES_DIR@</location>
+		</link>
+	</linkedResources>
 </projectDescription>

Modified: public/yanel/trunk/src/build/resource-types/resource-type.build.xml
===================================================================
--- public/yanel/trunk/src/build/resource-types/resource-type.build.xml	2009-04-21 14:44:59 UTC (rev 42454)
+++ public/yanel/trunk/src/build/resource-types/resource-type.build.xml	2009-04-21 14:57:45 UTC (rev 42455)
@@ -37,6 +37,9 @@
 
   </target>
 
+  <property name="eclipse.yanel.build.classes.dir.link" value="yanel-build-webapp-classes"/>
+  <property name="eclipse.classes.dir.link" value="cnode1-webapp-WEB-INF-classes"/>
+
   <target name="eclipse:classpath" description="Update Eclipse's .classpath file" depends="init">
     <artifact:dependencies pathId="Yanel.test.jars.classpath" filesetId="Yanel.test.jars.fileset">
       <remoteRepository refid="wyona.remote.repository"/>
@@ -49,11 +52,20 @@
       <fileset refid="maven2.resource.fileset"/>
       <fileset refid="Yanel.test.jars.fileset"/>
     </path>
+    <condition property="eclipse.classes.dir" value="${eclipse.classes.dir.link}" else="">
+      <isset property="do.autopatch.cnode1.webapp.WEB-INF.classes"/>
+    </condition>
+    <condition property="eclipse.source.dirs" value="src/java:${eclipse.yanel.build.classes.dir.link}" else="">
+      <isset property="do.autopatch.cnode1.webapp.WEB-INF.classes"/>
+    </condition>
     <ant dir="${yanel.home}/tools/eclipse.settings" target="update-classpath"
      inheritAll="false" inheritRefs="false">
       <reference torefid="classpath.ref" refid="eclipse.classpath"/>
       <property name="classpath.dir" value="${resource.home.dir}"/>
+      <property name="classes.dir" value="${eclipse.classes.dir}"/>
+      <property name="source.dirs" value="${eclipse.source.dirs}"/>
     </ant>
+    <echo><!--XXX -->WARNING (if you used -Ddo.autopatch.cnode1.webapp.WEB-INF.classes=foo to make Eclipse automatically patch the webapp's classes in place during compilation): the logs will show up in ${yanel.home}/build/log4j-cmdl.log and not in ${yanel.home}/build/log4j-cnode1.log (due to to way the build is currently set up).</echo>
   </target>
 
   <target name="eclipse" description="Generate all files needed to use the resource type under Eclipse (WARNING: .project file will be overwritten!)" depends="eclipse:classpath">
@@ -62,6 +74,10 @@
         <filter token="RESOURCE_TYPE_NAME" value="${ant.project.name}"/>
         <filter token="YANEL_VERSION" value="${yanel.version}-r${yanel.revision}"/>
         <filter token="GENERATION_COMMAND" value="build -f ${ant.file} eclipse"/>
+        <filter token="YANEL_BUILD_CLASSES_DIR_LINK" value="${eclipse.yanel.build.classes.dir.link}"/>
+        <filter token="YANEL_BUILD_CLASSES_DIR" value="${yanel.build.webapp.classes.dir}"/>
+        <filter token="CLASSES_DIR_LINK" value="${eclipse.classes.dir.link}"/>
+        <filter token="CLASSES_DIR" value="${tomcat1.webapps.dir}/${servlet.context.prefix}/WEB-INF/classes"/><!--FIXME: this should not be Tomcat-specific... -->
       </filterset>
     </copy>
     <echo>Eclipse project created: in Eclipse you can now import (as an existing project into your workspace) this resource-type with root directory set to ${resource.home.dir} and build it there!</echo>



More information about the Yanel-commits mailing list