Last modified by Pascal Robert on 2012/07/21 20:39

From version 62.1
edited by George Domurot
on 2009/07/14 10:09
Change comment: There is no comment for this version
To version 65.1
edited by Pascal Robert
on 2012/07/21 20:39
Change comment: Migrated to Confluence 5.3

Summary

Details

Page properties
Parent
... ... @@ -1,0 +1,1 @@
1 +Deprecated info
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.gedo820
1 +XWiki.probert
Tags
... ... @@ -1,0 +1,1 @@
1 +favourite
Content
... ... @@ -4,8 +4,12 @@
4 4  
5 5  == WOLips 3.4.x, and later, Side-note ==
6 6  
7 -For WOLips 3.4.x and later, while embedding is built-in, it's not enabled by default. To enable embedding:
7 +{{warning}}
8 +If you are updating an older project, make sure you get the latest build.xml file. Create a new project, then copy/paste the contents of the fresh build.xml file into your project's build.xml file.
9 +{{/warning}}
8 8  
11 +For WOLips 3.4.x and later, while embedding is built-in, it's not enabled by default. To enable embedding:
12 +
9 9  * make sure you are in the WO Explorer view
10 10  * right-click your project folder, select Properties, select WOLips Deployment
11 11  * check the related, if not all, options under Embed Frameworks
... ... @@ -14,54 +14,47 @@
14 14  
15 15  * make sure you are in the Navigator view
16 16  * edit build.properties, and add:
17 -* ##build.app.name=MyApp-2009-07-14##
21 +* {{code language="none"}}build.app.name=MyApp-2009-07-14{{/code}}
18 18  
19 -There is a known bug with WO 5.4.x (for those not using the latest Wonder release) regarding proper linking to your web server resources within the embedded frameworks. The WOFrameworksBaseURL isn't set correctly. To do this you'll need to programmatically set this within your Application constructor:
23 +There is a known bug with WO 5.4.x (for those not using the latest Wonder release) regarding proper linking to your web server resources within the embedded frameworks. The WOFrameworksBaseURL isn't set correctly. To do this you'll need to programmatically set this within your Application constructor:
20 20  
21 -* ##setFrameworksBaseURL("/WebObjects/MyApp-2009-07-14.woa/Frameworks");##
25 +* {{code language="none"}}setFrameworksBaseURL("/WebObjects/MyApp-2009-07-14.woa/Frameworks");{{/code}}
22 22  
23 23  Within build.properties (I may need to be corrected on this), the best approach to linking your embedded framework's web server resources automatically is to include (however the bug noted above breaks this):
24 24  
25 -* ##frameworksBaseURL=/WebObjects/$build.app.name.woa/Frameworks##
29 +* {{code language="none"}}frameworksBaseURL=/WebObjects/${build.app.name}.woa/Frameworks{{/code}}
26 26  
27 -And finally, there is a bud in the build.xml file that you may need to clean-up:
28 -[[http://issues.objectstyle.org/jira/browse/WOL-979]]
29 -
30 30  == Introduction ==
31 31  
32 -The previous tutorial articles provide details of customization of the default ant build script that is present in your WebObjects projects. This article provides a fully custom build script that you can just drop into your project and use it as an alternative to the default build.xml. This script is called the "split//embedded//build" script. Along with providing the script, this article explains in detail what deployment artifacts are produced by the build. Hopefully the functionality in this script will make their way into the standard script someday with configuration parameters settable in a simple way in the build.properties file.
33 +The previous tutorial articles provide details of customization of the default ant build script that is present in your WebObjects projects. This article provides a fully custom build script that you can just drop into your project and use it as an alternative to the default build.xml. This script is called the "split_embedded_build" script. Along with providing the script, this article explains in detail what deployment artifacts are produced by the build. Hopefully the functionality in this script will make their way into the standard script someday with configuration parameters settable in a simple way in the build.properties file.
33 33  
34 34  == Pre-requisites ==
35 35  
36 -This [[script>>^split_embedded_build.xml]] only works with the modern WOLips project format and the WOnderApplication project template format (since the layout of regular projects is now similar to Wonder layout). However the script is easily changed to accommodate the "old" standard format by changing the dir names in the script (for example "Sources" in the new project layout was "src" in the old layout)
37 +This [[script>>attach:split_embedded_build.xml]] only works with the modern WOLips project format and the WOnderApplication project template format (since the layout of regular projects is now similar to Wonder layout). However the script is easily changed to accommodate the "old" standard format by changing the dir names in the script (for example "Sources" in the new project layout was "src" in the old layout)
37 37  
38 38  {{info title="Modern WebObjects Project Layout"}}
39 -
40 40  This layout is the standard layout for all WebObjects projects created by WOLips (rev #4735 at least). The distinct folder names indicate if your project is in this modern format and if yours is the same, then this ant script should work.
41 41  
42 -!modern_project_layout.jpg!
43 -
42 +[[image:attach:modern_project_layout.jpg]]
44 44  {{/info}}
45 45  
46 46  == Installation and Usage of the Script ==
47 47  
48 -Have no fear ;-) , you will not break anything by dropping this script as is into your project and trying it out. You can just use it as is without replacing your default build.xml
47 +Have no fear , you will not break anything by dropping this script as is into your project and trying it out. You can just use it as is without replacing your default build.xml
49 49  
50 -* So, download the [[script>>^split_embedded_build.xml]] by right-clicking this [[link>>^split_embedded_build.xml]] and selecing Save As... or whatever your browser uses for saving contents at a link destination.
49 +* So, download the [[script>>attach:split_embedded_build.xml]] by right-clicking this [[link>>attach:split_embedded_build.xml]] and selecing Save As... or whatever your browser uses for saving contents at a link destination.
51 51  * Drag it to the root of your project.
52 52  
53 -* Open the Ant run configuration for the script by right-clicking on the script and selecting the menu shown below.
52 +* Open the Ant run configuration for the script by right-clicking on the script and selecting the menu shown below.
54 54  
55 55  {{info title="Using the Ant Script"}}
56 - !running_the_script.jpg!
57 -
55 +[[image:attach:running_the_script.jpg]]
58 58  {{/info}}
59 59  
60 -* Next select the "clean" and compileAndBuild" tasks. If necessary use the "Order..." button to ensure that "clean" comes before "compileAndBuild".
58 +* Next select the "clean" and compileAndBuild" tasks. If necessary use the "Order..." button to ensure that "clean" comes before "compileAndBuild".
61 61  
62 62  {{info title="Configure the Ant Tasks to be run"}}
63 - !ant_tasks.jpg!
64 -
61 +[[image:attach:ant_tasks.jpg]]
65 65  {{/info}}
66 66  
67 67  * Click the Run button to run the ant script and your fully embedded split install deployment bundles will be created in the "dist" folder.
... ... @@ -77,8 +77,7 @@
77 77  OK, so getting to the point, an optional custom app name can be set in the project's build.properties file by simply adding a property "build.app.name" as shown below.
78 78  
79 79  {{info title="Customizing the Application Build Name"}}
80 - !custom_app_name.jpg!
81 -
77 +[[image:attach:custom_app_name.jpg]]
82 82  {{/info}}
83 83  
84 84  == Features ==
... ... @@ -90,15 +90,13 @@
90 90  * Self-contained deployment bundles - all required frameworks are embedded - minimal dependency on target server configuration and versions. For example, there is no need to install Wonder frameworks on your deployment server since the ones you developed and tested with are embedded in the deployment bundles. Experience has shown that this improves consistency of deployment reliability.
91 91  * Compressed gzipped tar archives of both application and webserver bundles are created, ready for copying to target server(s)
92 92  ** This is easily decompressed on the server using
93 -** $ sudo tar xvzf bundle.tar.gz
89 +** $ sudo tar -xvzf bundle.tar.gz
94 94  
95 95  == Anatomy of Embedded Split Install Bundles produced by this Ant Script ==
96 96  
97 97  {{info title="The Deployment Files"}}
98 -
99 99  The two compressed "ready-to-deploy" bundles are highlighted below
100 -!build_artifacts.jpg!
101 -
95 +[[image:attach:build_artifacts.jpg]]
102 102  {{/info}}
103 103  
104 104  The notable aspects of the embedded build structure are shown below.
... ... @@ -106,11 +106,10 @@
106 106  === Application Bundle ===
107 107  
108 108  {{info title="Embedded Application Bundle Layout"}}
103 +[[image:attach:app_bundle_layout.jpg]]
109 109  
110 -!app_bundle_layout.jpg!
111 111  * Opening the app executable (command line script at bundle root having the application name as its name) and looking at the end will reveal that the WOFrameworksBaseURL references the frameworks inside the webserver embedded bundle.
112 112  * Examining the Contents/MacOS/MacOSClassPath.txt file will reveal that the java classpath refers to all the jars inside the embedded bundle.
113 -
114 114  {{/info}}
115 115  
116 116  The application bundle typically gets installed as follows:
... ... @@ -117,13 +117,12 @@
117 117  
118 118  * Install Location = /Library/WebObjects/Applications/
119 119  * chown (ownership) = appserver:appserveradm
120 -* chmod (permissions) = 755 (750 if you wish, but your server login id needs to be a member of appserveradm group to cd into the bundle)
113 +* chmod (permissions) = 755 (750 if you wish, but your server login id needs to be a member of appserveradm group to cd into the bundle)
121 121  
122 122  === WebServer Bundle ===
123 123  
124 124  {{info title="Embedded WebServer Bundle Layout"}}
125 - !webserver_bundle_layout.jpg!
126 -
118 +[[image:attach:webserver_bundle_layout.jpg]]
127 127  {{/info}}
128 128  
129 129  The webserver bundle typically gets installed as follows:
ant_tasks.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +37.0 KB
Content
app_bundle_layout.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +63.2 KB
Content
build_artifacts.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +17.6 KB
Content
custom_app_name.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +40.8 KB
Content
modern_project_layout.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +25.3 KB
Content
running_the_script.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +46.9 KB
Content
split_embedded_build.xml
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +13.7 KB
Content
... ... @@ -1,0 +1,294 @@
1 +<project name="Workbench" default="build" basedir=".">
2 + <!-- KK: WARNING: The embedded webserver bundle may not be generated correctly with WOLips versions
3 + earlier than 4118 -->
4 + <!-- KK: This build script is based on standard WOLips script that comes with WOApplication template
5 + Changes and additions are commented. Use diff tool to compare this to standard WOLips build.xml if u like -->
6 +
7 + <!-- main targets -->
8 + <!-- add optional targets to depends list if needed -->
9 + <!-- KK: additional depends targets added: record.build.info, ws.split.embed -->
10 + <target name="build" depends="setProps,init.build,build.woapp,ws.split.embed,ssdd,war"/>
11 +
12 + <target name="compileAndBuild" depends="setProps,init.build,compile,build.woapp,ws.split.embed,ssdd,war" />
13 +
14 + <target name="install" depends="setProps,init.install,build.woapp,ws.split.embed,ssdd,war"/>
15 +
16 + <target name="clean" depends="setProps">
17 + <delete dir="dist"/>
18 + </target>
19 +
20 + <!-- property determination -->
21 + <target name="setProps">
22 + <property file="${user.home}${file.separator}build.properties"/>
23 + <property file="build.properties"/>
24 + <property file="${user.home}${file.separator}Library${file.separator}wobuild.properties"/>
25 + <condition property="wo.properties.check.failed">
26 + <not>
27 + <and>
28 + <isset property="wo.wosystemroot"/>
29 + <isset property="wo.wolocalroot"/>
30 + </and>
31 + </not>
32 + </condition>
33 + <fail message="Could not find ${user.home}${file.separator}Library${file.separator}wobuild.properties." if="wo.properties.check.failed"/>
34 + <property name="install.dir" value="${wo.wolocalroot}/Library/WebObjects/Applications"/>
35 +
36 + <!-- KK: the next property supports webserver split install bundle installation location -->
37 + <property name="wsinstall.dir" value="${wo.wolocalroot}/Library/WebServer/Documents"/>
38 +
39 + <!-- KK: Defaults property 'build.app.name' to be 'project.name' if not already defined explicitly -->
40 + <condition property="build.app.name" value="${build.app.name}" else="${project.name}">
41 + <and>
42 + <isset property="build.app.name"/>
43 + </and>
44 + </condition>
45 +
46 + <!-- KK: This next line logs all ant properties to console - useful for troubleshooting build failures -->
47 + <echoproperties />
48 + </target>
49 +
50 + <!-- basic initializations -->
51 + <target name="init.install">
52 + <tstamp/>
53 + <property name="dest.dir" value="${install.dir}"/>
54 + <!-- KK: Sets the webserver document root as destination -->
55 + <property name="wsdest.dir" value="${wsinstall.dir}"/>
56 + </target>
57 +
58 + <target name="init.build">
59 + <tstamp/>
60 + <property name="dest.dir" value="dist"/>
61 + <!-- KK: Since the bundle names are the same for app and ws split bundle, put ws bundle in sub-dir -->
62 + <property name="wsdest.dir" value="dist/ws_root"/>
63 + </target>
64 +
65 + <!-- This copies webserver resources from app.woa's embedded frameworks into split install bundle -->
66 + <target name="ws.split.embed"
67 + depends="setProps,build.woapp"
68 + description="Adds embedded framework webserver resources to the split install bundle by copying from deployment build bundle">
69 + <copy todir="${wsdest.dir}/WebObjects/${build.app.name}.woa"
70 + verbose="true">
71 + <fileset dir="${dest.dir}/${build.app.name}.woa/Contents/Library">
72 + <include name="Frameworks/*.framework/WebServerResources/**"/>
73 + </fileset>
74 + </copy>
75 + <!-- create a tar archive of the webserver bundle -->
76 + <tar destfile="${wsdest.dir}/WebObjects/${build.app.name}-webserver-bundle.tar.gz"
77 + compression="gzip"
78 + basedir="${wsdest.dir}/WebObjects"
79 + longfile="gnu"
80 + includes="${build.app.name}.woa/**">
81 + </tar>
82 + </target>
83 +
84 + <!-- woproject tasks -->
85 + <target name="build.woapp" depends="setProps,init.build,compile">
86 +
87 + <taskdef name="woapplication" classname="org.objectstyle.woproject.ant.WOApplication">
88 + </taskdef>
89 +
90 + <!-- add webXML="true" in build.properties file to generate a web.xml file -->
91 + <!-- KK: added wsDestDir and frameworksBaseURL properties here -->
92 + <!-- using build.app.name instead of project name -->
93 + <!-- KK: About frameworksBaseURL: This is not documented, but basically it adds this info as a
94 + launch argument inside the application executable script resulting in ALL webserver
95 + resource URLs pointing to our embedded webserver resource frameworks.
96 + Consequently, we MUST embed ALL frameworks including Apple's frameworks, not
97 + just the 3rd party ones in wo.localroot if we are to use this feature -->
98 + <woapplication name="${build.app.name}" stdFrameworks="false"
99 + destDir="${dest.dir}"
100 + customInfoPListContent="${customInfoPListContent}"
101 + principalClass="${principalClass}"
102 + webXML="${webXML}"
103 + webXML_CustomContent="${webXML_CustomContent}"
104 + wsDestDir="${wsdest.dir}"
105 + frameworksBaseURL="/WebObjects/${build.app.name}.woa/Frameworks">
106 + <classes dir="${classes.dir}">
107 + <patternset>
108 + <includesfile name="woproject/classes.include.patternset"/>
109 + <excludesfile name="woproject/classes.exclude.patternset"/>
110 + </patternset>
111 + </classes>
112 + <wsresources dir=".">
113 + <patternset>
114 + <includesfile name="woproject/wsresources.include.patternset"/>
115 + <excludesfile name="woproject/wsresources.exclude.patternset"/>
116 + </patternset>
117 + </wsresources>
118 + <resources dir=".">
119 + <patternset>
120 + <includesfile name="woproject/resources.include.patternset"/>
121 + <excludesfile name="woproject/resources.exclude.patternset"/>
122 + </patternset>
123 + </resources>
124 + <!-- KK: Changed embed to true -->
125 + <frameworks root="${wo.wolocalroot}" embed="true">
126 + <patternset>
127 + <includesfile name="woproject/ant.frameworks.wo.wolocalroot"/>
128 + </patternset>
129 + </frameworks>
130 + <!-- KK: Changed embed to true -->
131 + <frameworks root="${wo.wosystemroot}" embed="true">
132 + <patternset>
133 + <includesfile name="woproject/ant.frameworks.wo.wosystemroot"/>
134 + </patternset>
135 + </frameworks>
136 + <!-- KK: Changed embed to true -->
137 + <frameworks root="${user.home}" embed="true">
138 + <patternset>
139 + <includesfile name="woproject/ant.frameworks.user.home"/>
140 + </patternset>
141 + </frameworks>
142 + <otherclasspath root="${wo.wosystemroot}">
143 + <patternset>
144 + <includesfile name="woproject/ant.classpaths.wo.wosystemroot"/>
145 + </patternset>
146 + </otherclasspath>
147 + <lib dir="Libraries">
148 + <include name="*.jar"/>
149 + <exclude name="**/*.woa/**"/>
150 + </lib>
151 + </woapplication>
152 +
153 + <!-- create a tar archive of the application bundle -->
154 + <tar destfile="${dest.dir}/${build.app.name}-app-bundle.tar.gz"
155 + compression="gzip"
156 + basedir="${dest.dir}"
157 + longfile="gnu"
158 + includes="${build.app.name}.woa/**">
159 + </tar>
160 + </target>
161 +
162 + <!-- optional targets -->
163 +
164 + <!-- war target-->
165 + <!-- To use this target remove the if="${never}" statement and create the LICENSE in your project
166 + and create the web.xml file with the woapplication task.-->
167 + <target name="war" if="${never}" depends="ssdd">
168 + <war destfile="${dest.dir}/${project.name}.war" webxml="${dest.dir}/${project.name}/WEB-INF/web.xml" basedir="${dest.dir}/${project.name}">
169 + <lib dir="${wo.wosystemroot}/Library/Frameworks/JavaWOJSPServlet.framework/WebServerResources/Java/">
170 + <include name="JavaWOJSPServlet_client.jar"/>
171 + </lib>
172 + </war>
173 + <copy todir="/tmp/${project.name}.dst/Library/WebObjects/Applications/">
174 + <fileset dir="${dest.dir}">
175 + <include name="${project.name}.woa/**"/>
176 + </fileset>
177 + </copy>
178 + </target>
179 +
180 + <!-- ssdd target-->
181 + <!-- To use this target
182 + 1) remove the if="${never}" statement
183 + 2) change embed=true in the woapp target above
184 + 3) create the LICENSE in your project directory
185 + 4) add JavaWOJSPServlet in your WOFrameworks build path
186 + 5) Edit the build.properties file
187 + 6) set webXML = true
188 + -->
189 + <target name="ssdd" if="${never}" depends="build.woapp">
190 + <mkdir dir="${dest.dir}/${project.name}/WEB-INF/classes"/>
191 + <mkdir dir="${dest.dir}/${project.name}/WEB-INF/tlds"/>
192 + <copy todir="${dest.dir}/${project.name}/WEB-INF/">
193 + <fileset dir="${dest.dir}/${project.name}.woa/Contents/">
194 + <include name="web.xml"/>
195 + </fileset>
196 + </copy>
197 + <copy todir="${dest.dir}/${project.name}/WEB-INF/">
198 + <fileset dir=".">
199 + <include name="LICENSE"/>
200 + </fileset>
201 + </copy>
202 + <copy todir="${dest.dir}/${project.name}/WEB-INF/">
203 + <fileset dir="${dest.dir}">
204 + <include name="${project.name}.woa/**"/>
205 + </fileset>
206 + </copy>
207 + <!-- copy the frameworks to the WEBINFROOT/Library directory -->
208 + <copy todir="${dest.dir}/${project.name}/WEB-INF/">
209 + <fileset dir="${dest.dir}/${project.name}.woa/Contents">
210 + <include name="Library/**"/>
211 + </fileset>
212 + </copy>
213 + <copy todir="${dest.dir}/${project.name}/WEB-INF/">
214 + <fileset dir="${dest.dir}/${project.name}.woa">
215 + <include name="Resources/**"/>
216 + </fileset>
217 + </copy>
218 + <copy todir="${dest.dir}/${project.name}/WEB-INF/lib/">
219 + <fileset dir="${dest.dir}/${project.name}/WEB-INF">
220 + <include name="**/Resources/**/*.jar"/>
221 + </fileset>
222 + <mapper type="flatten"/>
223 + </copy>
224 +
225 + <!-- Get the necessary Frameworks from the webobjects system root instead of the project wrapper -->
226 + <copy todir="${dest.dir}/${project.name}/WEB-INF/lib"
227 + file="${wo.wosystemroot}/Library/Frameworks/JavaWOJSPServlet.framework/WebServerResources/Java/JavaWOJSPServlet_client.jar" />
228 +
229 + <copy todir="${dest.dir}/${project.name}/WEB-INF/tlds">
230 + <fileset dir="${wo.wosystemroot}/Library/Frameworks/JavaWOJSPServlet.framework/Resources/">
231 + <include name="WOtaglib_1_0.tld"/>
232 + </fileset>
233 + </copy>
234 + <!-- the WebObject Extensions -->
235 + <copy todir="${dest.dir}/${project.name}/WEB-INF/lib">
236 + <fileset dir="/Library/WebObjects/Extensions/">
237 + <include name="*.jar"/>
238 + <exclude name="servlet.jar"/>
239 + </fileset>
240 + <mapper type="flatten"/>
241 + </copy>
242 +
243 +
244 + <!-- fix the Macos*ClassPath.txt files -->
245 +
246 + <replaceregexp file="${dest.dir}/${project.name}/WEB-INF/${project.name}.woa/Contents/MacOS/MacOSClassPath.txt"
247 + match="APPROOT/Resources/Java/${project.name.lowercase}.jar"
248 + replace="APPROOT/${project.name}.woa/Contents/Resources/Java/${project.name.lowercase}.jar" byline="true" />
249 +
250 + <replaceregexp file="${dest.dir}/${project.name}/WEB-INF/${project.name}.woa/Contents/MacOS/MacOSXServerClassPath.txt"
251 + match="APPROOT/Resources/Java/${project.name.lowercase}.jar"
252 + replace="APPROOT/${project.name}.woa/Contents/Resources/Java/${project.name.lowercase}.jar" byline="true" />
253 +
254 + <!-- fix the web.xml file: the app itself needs project.name/Contents -->
255 +
256 + <replaceregexp file="${dest.dir}/${project.name}/WEB-INF/web.xml" match="WEBINFROOT/Resources/Java/${project.name.lowercase}.jar"
257 + replace="WEBINFROOT/${project.name}.woa/Contents/Resources/Java/${project.name.lowercase}.jar" byline="true" />
258 +
259 + <!-- fix the web.xml file to remove the extra Frameworks/ directory level for the frameworks -->
260 +
261 + <replaceregexp file="${dest.dir}/${project.name}/WEB-INF/web.xml" match="WEBINFROOT/Frameworks//"
262 + replace="WEBINFROOT/" byline="true" />
263 +
264 + </target>
265 +
266 + <!-- copy strings files -->
267 + <target name="copy.strings">
268 + <copy todir="${dest.dir}/${project.name}.woa/Contents/Resources">
269 + <fileset dir="." casesensitive="yes">
270 + <include name="*.strings"/>
271 + <include name="**/*.strings"/>
272 + </fileset>
273 + <mapper type="flatten"/>
274 + </copy>
275 + </target>
276 +
277 + <target name = "compile" depends = "setProps,init.build" >
278 + <mkdir dir = "bin"/>
279 + <javac srcdir = "Sources" destdir = "bin">
280 + <classpath>
281 + <fileset dir="${wo.dir.user.home.library.frameworks}" includesfile = "woproject/ant.frameworks.user.home">
282 + <include name = "**/*.jar"/>
283 + </fileset>
284 + <fileset dir="${wo.wolocalroot}" includesfile = "woproject/ant.frameworks.wo.wolocalroot">
285 + <include name = "**/*.jar"/>
286 + </fileset>
287 + <fileset dir="${wo.wosystemroot}" includesfile = "woproject/ant.frameworks.wo.wosystemroot">
288 + <include name = "**/*.jar"/>
289 + </fileset>
290 + </classpath>
291 + </javac>
292 + </target>
293 +</project>
294 +
webserver_bundle_layout.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.XWikiGuest
Size
... ... @@ -1,0 +1,1 @@
1 +37.2 KB
Content