Last modified by Ulrich Köster on 2009/08/02 20:26

From version 21.1
edited by Greg.Brown
on 2009/08/02 18:21
Change comment: There is no comment for this version
To version 24.1
edited by Henrique Prange
on 2009/08/02 20:26
Change comment: Migrated to Confluence 4.0

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.gbrown
1 +XWiki.hprange
Content
... ... @@ -1,10 +1,10 @@
1 -If you have used the [[woapplication-archetype]] to create your project, jump to the step 3.
1 +If you have used the [[doc:woapplication-archetype]] to create your project, jump to the step 3.
2 2  
3 3  You have to follow some instructions to build a true WAR package:
4 4  
5 5  == Step 1: Create a web.xml file ==
6 6  
7 -You need to create a web.xml file. You can download a simple web.xml file [[here>>^web.xml]]. Don't forget to change the displayName and the WOMainBundle properties:
7 +You need to create a web.xml file. You can download a simple web.xml file [[here>>attach:web.xml]]. Don't forget to change the displayName and the WOMainBundle properties:
8 8  
9 9  {{noformat}}
10 10  
... ... @@ -23,7 +23,7 @@
23 23  
24 24  == Step 2: Create/generate an Info.plist file ==
25 25  
26 -You also need to create or generate a valid Info.plist file into your resources folder. [[Here>>^Info.plist]] is a sample Info.plist. You have to change the $your-app-name and $package occurrences with the respective application name and Application class package.
26 +You also need to create or generate a valid Info.plist file into your resources folder. [[Here>>attach:Info.plist]] is a sample Info.plist. You have to change the ${your-app-name} and ${package} occurrences with the respective application name and Application class package.
27 27  
28 28  == Step 3: Package your classes, resources and webserver resources ==
29 29  
... ... @@ -32,7 +32,24 @@
32 32  {{noformat}}
33 33  
34 34  <build>
35 + ...
36 + <resources>
35 35   ...
38 + <resource>
39 + <targetPath>Resources</targetPath>
40 + <directory>${basedir}/src/main/resources</directory>
41 + </resource>
42 + <resource>
43 + <targetPath>Resources</targetPath>
44 + <directory>${basedir}/src/main/components</directory>
45 + </resource
46 + <resource>
47 + <targetPath>WebServerResources</targetPath>
48 + <directory>${basedir}/src/main/webserver-resources</directory>
49 + </resource>
50 + ...
51 + </resources>
52 + ...
36 36   <plugins>
37 37   ...
38 38   <plugin>
... ... @@ -74,11 +74,23 @@
74 74  
75 75  {{/noformat}}
76 76  
77 -**NOTE**: if your application uses Wonder, please read [[this tutorial>>http://wiki.objectstyle.org/confluence/display/WONDER/Creating+a+wonder+app+to+deploy+as+a+servlet]].
94 +**NOTE**: If your application uses Wonder you must add the ERXServlet dependency:
78 78  
96 +{{noformat}}
97 +
98 +<dependency>
99 + <groupId>wonder.core</groupId>
100 + <artifactId>ERServlet</artifactId>
101 + <version>1.0</version>
102 +</dependency>
103 +
104 +{{/noformat}}
105 +
106 +Read this [[tutorial>>url:http://wiki.objectstyle.org/confluence/display/WONDER/Creating+a+wonder+app+to+deploy+as+a+servlet||shape="rect"]] to find how to configure the ERXServletAdaptor in your application.
107 +
79 79  == Step 5: Change the packaging type ==
80 80  
81 -The default [[maven-war-plugin>>http://maven.apache.org/plugins/maven-war-plugin/]] can handle the war packaging correctly. You have to change the packaging of your POM to 'war' in order to use this plug-in:
110 +The default [[maven-war-plugin>>url:http://maven.apache.org/plugins/maven-war-plugin/||shape="rect"]] can handle the war packaging correctly. You have to change the packaging of your POM to 'war' in order to use this plug-in:
82 82  
83 83  {{noformat}}
84 84  
... ... @@ -88,49 +88,55 @@
88 88  
89 89  It's done.
90 90  
91 -{{panel title="2009 Bug Warning" borderStyle="dashed" borderColor="#ccc" titleBGColor="#F7D6C1" bgColor="#FFFFCE"}}
92 -
93 -It should be done, but...
94 -The 2.0.17 archetype does not add :
95 -{noformat}
96 - <resource>
97 - <targetPath>Resources</targetPath>
98 - <directory>${basedir}/src/main/components</directory>
99 - </resource>
100 - <resource>
101 - <targetPath>WebServerResources</targetPath>
102 - <directory>${basedir}/src/main/webserver-resources</directory>
103 - </resource>
104 -{noformat}
105 -to the pom.xml file, so your war will have no components; you should add these lines.
120 +== Step 6: Filtering variables with Maven (OPTIONAL) ==
106 106  
107 -Also, it does not add a necessary WebObjects 5.3 dependency and, if using Wonder, the ERServlet.jar:
108 -{noformat}
109 - <dependency>
110 - <groupId>${webobjects.groupId}</groupId>
111 - <artifactId>JavaWOJSPServlet_client
112 - </artifactId>
113 - <version>${webobjects.version}</version>
114 - </dependency>
115 - <dependency>
116 - <groupId>wonder.core</groupId>
117 - <artifactId>ERServlet</artifactId>
118 - <version>1.0</version>
119 - </dependency>
120 -{noformat}
121 -So, you may need to add that.
122 +Maven supports variable substitution during build time. It is called resource filtering. You can find more information about resource filtering [[here>>url:http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html||shape="rect"]] and [[here>>url:http://www.sonatype.com/books/maven-book/reference/resource-filtering-sect-description.html||shape="rect"]].
122 122  
123 -In addition, the archetype generated Info.plist needs fixing, as does the web.xml in the WEB-INF folder. There are values in these files like $\{project.artifactId\}, but for now, you must manually replace those values with actual values, e.g, MyProject.
124 +If you are using variables in your resource files (i.e. the Info.plist), you have to configure Maven to filter the Resources folder like this:
124 124  
125 -These probably will be fixed in the next release of plugins, but for now, watch this space, as there may be additional
126 -bugs posted here.
127 -
126 +{{noformat}}
128 128  
129 -{{/panel}}
128 +<build>
129 + ...
130 + <resources>
131 + ...
132 + <resource>
133 + <targetPath>Resources</targetPath>
134 + <directory>${basedir}/src/main/resources</directory>
135 + <filtering>true</filtering>
136 + </resource>
137 + ...
138 + </resources>
139 + ...
140 +</build>
130 130  
142 +{{/noformat}}
143 +
144 +If you are using variables in the web.xml file, you have to configure Maven to filter deployment descriptors like this:
145 +
146 +{{noformat}}
147 +
148 +<build>
149 + ...
150 + <plugins>
151 + ...
152 + <plugin>
153 + <artifactId>maven-war-plugin</artifactId>
154 + <configuration>
155 + ...
156 + <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
157 + </configuration>
158 + </plugin>
159 + ...
160 + </plugins>
161 + ...
162 +</build>
163 +
164 +{{/noformat}}
165 +
131 131  = Running your application as true WAR =
132 132  
133 -You can use the [[maven-jetty-plugin>>http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin]] to run and test your application.
168 +You can use the [[maven-jetty-plugin>>url:http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin||shape="rect"]] to run and test your application.
134 134  
135 135  == Step 1: Configure the maven-jetty-plugin ==
136 136  
... ... @@ -161,4 +161,4 @@
161 161  
162 162  == Step 3: See the result ==
163 163  
164 -Open a browser and type the URL for your application like this: [[http://locahost:8080/your-app-name/WebObjects/]]
199 +Open a browser and type the URL for your application like this: [[http:~~/~~/locahost:8080/your-app-name/WebObjects/>>url:http://locahost:8080/your-app-name/WebObjects/||shape="rect"]]