[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