Sie sind auf Seite 1von 41

GeoServer Developer Manual

Release 1.7.5

GeoServer

June 10, 2009

CONTENTS

ii

CHAPTER

ONE

INTRODUCTION

GeoServer Developer Manual, Release 1.7.5

Chapter 1. Introduction

CHAPTER

TWO

TOOLS
The following tools need to installed on the system before a GeoServer developer environment can be set up.

2.1 Java
Developing with GeoServer requires a Java Development Kit (JDK) 1.5 or greater, available from Sun Microsystems. Note: While it is possible to use a JDK other than the one provided by Sun, it is recommended that the Sun JDK be used.

2.2 Maven
GeoServer uses a tool known as Maven to build. The current version of Maven used is 2.0.9 and is available from Apache.

2.3 Subversion
GeoServer source code is stored and versioned in a subversion repository. There are a variety of subversion clients available for a number of different platforms. Visit http://subversion.tigris.org/getting.html for more details.

GeoServer Developer Manual, Release 1.7.5

Chapter 2. Tools

CHAPTER

THREE

SOURCE CODE
The GeoServer source code is located at http://svn.codehaus.org/geoserver. To check out the development / trunk version:
svn co http://svn.codehaus.org/geoserver/trunk geoserver

To check out the stable / branch version:


svn co http://svn.codehaus.org/geoserver/branches/1.7.x geoserver

Warning: The GeoServer repository contains a signicant amount of spatial data. Checking it out over a slow or low bandwidth connection can be costly. In such cases it may be desirable to check out only the sources:
svn co http://svn.codehaus.org/geoserver/trunk/src

3.1 Committing
In order to commit to the repository the following steps must be taken: 1. Install this subversion cong le. See additional notes below. 2. Register for commit access as described here. 3. Switch the repository to the https protocol. Example:
[root of checkout]% svn switch https://svn.codehaus.org/geoserver/trunk

3.2 Repository structure


http://svn.codehaus.org/geoserver/ branches/ spike/ tags/ trunk/

GeoServer Developer Manual, Release 1.7.5

branches contains all previously stable development branches, 1.6.x, 1.7.x, etc... spike contains experimental projects and mock ups tags contains all previously released versions trunk is the current development branch

3.3 Branch structure


Each development branch has the following structure:
http://svn.codehaus.org/geoserver/ doc/ src/ data/

doc contains the sources for the user and developer guides src contains the java sources for GeoServer itself data contains a variety of GeoServer data directories

Chapter 3. Source Code

CHAPTER

FOUR

MAVEN QUICKSTART

GeoServer Developer Manual, Release 1.7.5

Chapter 4. Maven QuickStart

CHAPTER

FIVE

ECLIPSE QUICKSTART

GeoServer Developer Manual, Release 1.7.5

10

Chapter 5. Eclipse QuickStart

CHAPTER

SIX

PROGRAMMING GUIDE
6.1 OWS Services 6.2 REST Services
This section provides an overview of how RESTful services work in GeoServer.

6.2.1 Overview
GeoServer uses a library known as Restlet for all REST related functionality. Restlet is a lightweight rest framework written in Java that integrates nicely with existing servlet based applications. REST dispatching In GeoServer, all requests under the path /rest are considered a call to a restful service. Every call of this nature is handled by a rest dispatcher. The job of the dispatcher is to route the request to the appropriate end point. This end point is known as a restlet.

11

GeoServer Developer Manual, Release 1.7.5

Restlets are loaded from the spring context, and therefore are pluggable. Restlets A restlet is the generic entity which handles calls routed by the dispatcher, and corresponds to the class org.restlet.Restlet. One can extend this class directly to implement a service endpoint. Alternatively one can extend a subclass for a specialized purpose. Namely a nder, which is described in the next section. Finders and resources Restful services are often implemented around the concept of resources. A nder is a special kind of restlet whose job is to nd the correct resource for a particular request. The resource then serves as the nal end point and handles the request. The appropriate classes from the restlet library are org.restlet.Finder and org.restlet.resource.Resource. Representations A representation, commonly referred to as a format, is the state of a particular state or encoding of a resource. For instance, when a request for a particular resource comes in, a representation of that resource is returned to the client.

6.2.2 Implementing a RESTful Service


This section describes how to implement a restful service in GeoServer, using a Hello World example. The service will be extremely simple and will return the text Hello World from a GET request.

12

Chapter 6. Programming Guide

GeoServer Developer Manual, Release 1.7.5

Prerequisites Before being able to proceed, GeoServer must be built on the local system. See the Source Code and Maven QuickStart sections for details. Create a new module 1. Create a new module named hello_rest somewhere on the le system. 2. Add the following pom.xml to the root of the new module:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xs <modelVersion>4.0.0</modelVersion> <groupId>org.geoserver</groupId> <artifactId>hello_rest</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>hello_rest</name> <dependencies> <dependency> <groupId>org.geoserver</groupId> <artifactId>rest</artifactId> <version>1.7.3-SNAPSHOT</version> </dependency> <dependency> <groupId>org.geoserver</groupId> <artifactId>data</artifactId> <version>1.7.3-SNAPSHOT</version> <classifier>tests</classifier> <scope>test</scope> </dependency> <dependency> <groupId>org.geoserver</groupId> <artifactId>main</artifactId> <version>1.7.3-SNAPSHOT</version> <classifier>tests</classifier> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.mockrunner</groupId> <artifactId>mockrunner</artifactId> <version>0.3.1</version> <scope>test</scope> </dependency> </dependencies>

6.2. REST Services

13

GeoServer Developer Manual, Release 1.7.5

<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> </project>

1. Create the directory src/main/java under the root of the new module:
[hello_rest]% mkdir -p src/main/java

Create the resource class 1. The class org.geoserver.rest.AbstractResource is a convenient base class available when creating new resources. Create a new class called HelloResource in the package org.geoserver.hellorest, which extends from AbstractResource.
package org.geoserver.hellorest; import import import import import java.util.Map; org.geoserver.rest.AbstractResource; org.geoserver.rest.format.DataFormat; org.restlet.data.Request; org.restlet.data.Response;

public class HelloResource extends AbstractResource { @Override protected Map<String, DataFormat> createSupportedFormats(Request request, Response response) return null; } }

2. The rst method to implement is createSupportedFormats(). The purpose of this method is to create mapping from an extension, to a particular format. For now the goal will be to return the text Hello World when a .txt extension is requested by the client.
@Override protected Map<String, DataFormat> createSupportedFormats(Request request, Response response) { HashMap formats = new HashMap(); formats.put( "txt", new StringFormat( MediaType.TEXT_PLAIN )); return formats; }

3. The next step is to override the handleGet() method. This method is called when a GET request is made for the resource. 14 Chapter 6. Programming Guide

GeoServer Developer Manual, Release 1.7.5

@Override public void handleGet() { //get the appropriate format DataFormat format = getFormatGet(); //transform the string "Hello World" to the appropriate response getResponse().setEntity(format.toRepresentation("Hello World")); }

The above makes use of the getFormatGet() method, whose purpose is to determine the extension being requested by the client, and look up the appropriate format for it. In this case when the client requests the .txt extension, the StringFormat setup in the previous step will be found. Create the application context 1. The next step is to create an application context that tells GeoServer about the resource created in the previous section. Create the directory src/main/resources under the root of the hello_rest module:
[hello_rest]% mkdir src/main/resources

2. Add the following applicationContext.xml le to the src/main/resources directory under the root of the hello_rest module.

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-bea <beans> <bean id="hello" class="org.geoserver.hellorest.HelloResource"/> <bean id="helloMapping" class="org.geoserver.rest.RESTMapping"> <property name="routes"> <map> <entry> <key><value>/hello.{format}</value></key> <value>hello</value> </entry> </map> </property> </bean> </beans>

There are two things to note above. The rst is the hello bean which is an instance of the HelloResource class created in the previous section. The second is the helloMapping bean, which denes a template for the uri in which the resource will be accessed. The above mapping species that the resource will be located at /rest/hello.{format} where format is the representation being requested by the client. As implemented hello.txt is the only supported representation. Test 1. Create the directory /src/test/java under the root of the hello_rest module:
[hello_rest]% mkdir -p src/test/java

6.2. REST Services

15

GeoServer Developer Manual, Release 1.7.5

2. Create a new test class called HelloResourceTest in the package org.geoserver.hellorest, which extends from org.geoserver.test.GeoServerTestSupport:
package org.geoserver.hellorest; import org.geoserver.test.GeoServerTestSupport; public class HelloResourceTest extends GeoServerTestSupport { public void test() throws Exception { } }

3. Add a statement which makes a GET request for /rest/hello.txt and asserts it is equal to the string Hello World:
public void test() throws Exception { assertEquals( "Hello World", getAsString("/rest/hello.txt")); }

4. Build and test the hello_test module:


[hello_rest]% mvn install

6.2.3 Implementing a RESTful Service with Maps


The previous section showed how to implement a very simple restful service. This section will show how to make use of some existing base classes in order to save time when supporting additional formats for representing resources. The class used is org.geoserver.rest.MapResource. The idea with MapResource is that a resource is backed by a data structure contained by a java.util.Map. With this map, the MapResource class can automatically create representations of the resource in either XML or JSON. Prerequisites This section builds off the example in the previous section Implementing a RESTful Service. Create a new resource class 1. Create a new class called HelloMapResource in the package org.geoserver.hellorest, which extends from MapResource:
package org.geoserver.hellorest; import java.util.Map; import org.geoserver.rest.MapResource; public class HelloMapResource extends MapResource { @Override public Map getMap() throws Exception { return null;

16

Chapter 6. Programming Guide

GeoServer Developer Manual, Release 1.7.5

} }

2. The rst method to implement is getMap(). The purpose of this method is to create a map based data structure which represents the resource. For now a simple map will be created with a single key message, containing the Hello World string:
@Override public Map getMap() throws Exception { HashMap map = new HashMap(); map.put( "message", "Hello World"); return map; }

Update the application context 1. The next step is to update an application context and tell GeoServer about the new resource created in the previous section. Update the applicationContext.xml le so that it looks like the following:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-bea <beans> <bean id="hello" class="org.geoserver.hellorest.HelloResource"/> <bean id="helloMap" class="org.geoserver.hellorest.HelloMapResource"/> <bean id="helloMapping" class="org.geoserver.rest.RESTMapping"> <property name="routes"> <map> <entry> <key><value>/hello.{format}</value></key> <!--value>hello</value--> <value>helloMap</value> </entry> </map> </property> </bean> </beans>

There are two things to note above. The rst is the addition of the helloMap bean. The second is a change to the helloMapping bean, which now maps to the helloMap bean, rather than the hello bean. Test 1. Create a new test class called HelloMapResourceTest in the package org.geoserver.hellorest, which extends from org.geoserver.test.GeoServerTestSupport:
package org.geoserver.hellorest; import org.geoserver.test.GeoServerTestSupport; public class HelloMapResourceTest extends GeoServerTestSupport { }

6.2. REST Services

17

GeoServer Developer Manual, Release 1.7.5

2. Add a test named testGetAsXML() which makes a GET request for /rest/hello.xml:
... import org.w3c.dom.Document; import org.w3c.dom.Node; ... public void testGetAsXML() throws Exception { //make the request, parsing the result as a dom Document dom = getAsDOM( "/rest/hello.xml" ); //print out the result print(dom); //make assertions Node message = getFirstElementByTagName( dom, "message"); assertNotNull(message); assertEquals( "Hello World", message.getFirstChild().getNodeValue() ); }

3. Add a second test named testGetAsJSON() which makes a GET request for /rest/hello.json:
... import net.sf.json.JSON; import net.sf.json.JSONObject; ... public void testGetAsJSON() throws Exception { //make the request, parsing the result into a json object JSON json = getAsJSON( "/rest/hello.json"); //print out the result print(json); //make assertions assertTrue( json instanceof JSONObject ); assertEquals( "Hello World", ((JSONObject)json).get( "message" ) ); }

4. Build and test the hello_test module:


[hello_rest]% mvn clean install -Dtest=HelloMapResourceTest

6.2.4 Implementing a RESTful Service with Reection


The previous section showed how to save some effort when implementing a RESTful service by taking advantage of the MapResource base class. This section will show how to make use of a different base class, but for a similar purpose. The class used is org.geoserver.rest.ReflectiveResource. The idea with ReflectiveResource is that a resource is backed by an arbitrary object. The ReflectiveResource class uses reection to automatically create representations of the resource as XML or JSON.

18

Chapter 6. Programming Guide

GeoServer Developer Manual, Release 1.7.5

Prerequisites This section builds off the example in the previous section Implementing a RESTful Service with Maps. Create a new java bean 1. The use of ReflectiveResource requires we have an underlying object to to work with. Create a class named Hello in the package org.geoserver.hellorest:
package org.geoserver.hellorest; public class Hello { String message; public Hello( String message ) { this.message = message; } public String getMessage() { return message; } }

Create a new resource class 1. Create a new class called HelloReflectiveResource in the package org.geoserver.hellorest, which extends from ReflectiveResource:
package org.geoserver.hellorest; import org.geoserver.rest.ReflectiveResource; public class HelloReflectiveResource extends ReflectiveResource { @Override protected Object handleObjectGet() throws Exception { return null; } }

2. The rst method to implement is handleObjectGet(). The purpose of this method is to return the underlying object representing the resource. In this case, an instance of the Hello class created in the previous step.
@Override protected Object handleObjectGet() throws Exception { return new Hello( "Hello World" ); }

Update the application context 1. The next step is to update an application context and tell GeoServer about the new resource created in the previous section. Update the applicationContext.xml le so that it looks like the following: 6.2. REST Services 19

GeoServer Developer Manual, Release 1.7.5

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-bea <beans> <bean id="hello" class="org.geoserver.hellorest.HelloResource"/> <bean id="helloMap" class="org.geoserver.hellorest.HelloMapResource"/> <bean id="helloReflective" class="org.geoserver.hellorest.HelloReflectiveResource"/> <bean id="helloMapping" class="org.geoserver.rest.RESTMapping"> <property name="routes"> <map> <entry> <key><value>/hello.{format}</value></key> <!--value>hello</value--> <!--value>helloMap</value--> <value>helloReflective</value> </entry> </map> </property> </bean> </beans>

There are two things to note above. The rst is the addition of the helloReflective bean. The second is a change to the helloMapping bean, which now maps to the helloReflective bean. Test 1. Create a new test class called HelloReflectiveResourceTest in the package org.geoserver.hellorest, which extends from org.geoserver.test.GeoServerTestSupport:
package org.geoserver.hellorest; import org.geoserver.test.GeoServerTestSupport; public class HelloReflectiveResourceTest extends GeoServerTestSupport { }

2. Add a test named testGetAsXML() which makes a GET request for /rest/hello.xml:
... import org.w3c.dom.Document; import org.w3c.dom.Node; ... public void testGetAsXML() throws Exception { //make the request, parsing the result as a dom Document dom = getAsDOM( "/rest/hello.xml" ); //print out the result print(dom); //make assertions Node message = getFirstElementByTagName( dom, "message");

20

Chapter 6. Programming Guide

GeoServer Developer Manual, Release 1.7.5

assertNotNull(message); assertEquals( "Hello World", message.getFirstChild().getNodeValue() ); }

3. Add a second test named testGetAsJSON() which makes a GET request for /rest/hello.json:
... import net.sf.json.JSON; import net.sf.json.JSONObject; ... public void testGetAsJSON() throws Exception { //make the request, parsing the result into a json object JSON json = getAsJSON( "/rest/hello.json"); //print out the result print(json); //make assertions assertTrue( json instanceof JSONObject ); JSONObject hello = ((JSONObject) json).getJSONObject( "org.geoserver.hellorest.Hello" ); assertEquals( "Hello World", hello.get( "message" ) ); }

4. Build and test the hello_test module:


[hello_rest]% mvn clean install -Dtest=HelloMapReflectiveResourceTest

6.2. REST Services

21

GeoServer Developer Manual, Release 1.7.5

22

Chapter 6. Programming Guide

CHAPTER

SEVEN

RELEASE GUIDE
Instructions for performing a GeoServer release.

Contents Release Guide Update source code Update the README Update version numbers Create a release tag Upgrade branch pom versions Set tag pom versions Build release artifacts Build documentation CITE test Hand test Build Windows installer Build Mac OS X installer Release on Jira Upload release artifacts to SourceForge Release on SourceForge Create a download page Announce the release

7.1 Update source code


1. Update or check out the branch to be released from. 2. Ensure that svn status yields no local modications.

23

GeoServer Developer Manual, Release 1.7.5

7.2 Update the README


1. Add an entry to release/README.txt using the following template:
GeoServer <VERSION> ( <DATE> ) ============================== <Short paragraph describing release>. <List of notable features / improvements / bug fixes> The entire changelog can be found at: <link to jira changelog> This release is based on <GeoTools version>.

Example:
GeoServer 1.7.1 (December 08, 2008) ---------------------------------The second release of the 1.7.1 series includes some great KML and Google Earth improvements, along with other new features and bug fixes. The new and note worthy for this release includes: * * * * * * KML Super Overlay and Regionating Support KML Extrude Support KML Reflector Improvements Mac OS X Installer New SQL Server DataStore Extension Improved Oracle DataStore Extension

And much more. The entire changelog can be found at : http://jira.codehaus.org/browse/GEOS/fixforversion/14502 This release is based on GeoTools 2.5.2.

2. Commit changes to the README:


svn commit -m "Updating README for <VERSION>" release/README.txt

7.3 Update version numbers


1. Upgrade the version number in the following les:
release/installer/win/geoserver.nsi release/installer/mac/GeoServer.app/Contents/Info.plist release/bin.xml release/doc.xml release/src.xml web/src/main/java/ApplicationResources*

Example:

24

Chapter 7. Release Guide

GeoServer Developer Manual, Release 1.7.5

sed -i s/1.7.1/1.7.2/g release/installer/win/geoserver.nsi

2. Commit changes:
svn commit -m "Updated version numbers for <VERSION>" release web/src/main/java

7.4 Create a release tag


1. Create a tag for the release:

svn copy -m "Create tag for release <VERION>" https://svn.codehaus.org/geoserver/<BRANCH> https:

2. Checkout the release tag:


svn co https://svn.codehaus.org/geoserver/tags/<VERSION>

Note: svn switch may also be used to get to the release tag but caution must be taken to switch back to the branch after the release has been performed.

7.5 Upgrade branch pom versions


1. Upgrade branch pom version numbers:
find . -name pom.xml -exec sed s/<VERSION>-SNAPSHOT/<NEWVERSION>-SNAPSHOT/g {} \;

Example:
find . -name pom.xml -exec sed s/1.7.1-SNAPSHOT/1.7.2-SNAPSHOT/g {} \;

2. Commit changes:
svn commit -m "Upgrading pom version to <NEWVERSION>-SNAPSHOT" .

7.6 Set tag pom versions


1. Set tag pom version numbers:
find . -name pom.xml -exec sed s/<VERSION>-SNAPSHOT/<VERSION>/g {} \;

Example:
find . -name pom.xml -exec sed s/1.7.1-SNAPSHOT/1.7.1/g {} \;

2. Commit changes:
svn commit -m "Setting pom versions to 1.7.1" .

7.4. Create a release tag

25

GeoServer Developer Manual, Release 1.7.5

7.7 Build release artifacts


Warning: All operations for the remainder of this guide must be performed from the release tag. 1. Compile from the root of the source tree with the folling command:
mvn clean install -P release

2. Build javadocs:
mvn javadoc:javadoc

3. Build artifacts:
mvn assembly:attached

At this point the release artifacts will be located in target/release.

7.8 Build documentation


Note: Building the GeoServer document requires the following be installed Sphinx, version 0.6 or greather Make 1. Change to the root of the documentation http://svn.codehaus.org/geoserver/branches/1.7.x/doc 2. Change directory to doc/user. 3. Run the make command:
make html

directory,

or

check

it

out

from

4. Change directory to build/html and archive its contents:


cd build/html zip geoserver-1.7.1-userguide.zip *

5. Upload the userguide to SourceForge following steps in the Upload release artifacts to SourceForge section.

7.9 CITE test


1. Change directory to target/release and unzip the binary package:
cd target/release unzip geoserver-*-bin.zip

2. Execute the GeoServer CITE tests as described in the Cite Test Guide. 26 Chapter 7. Release Guide

GeoServer Developer Manual, Release 1.7.5

3. Unzip the war package and deploy the war in a servlet container such as Tomcat:
unzip geoserver-*-war.zip cp geoserver.war /opt/tomcat5/webapps

4. Re-run GeoServer CITE tests.

7.10 Hand test


Start GeoServer with the release data directory and hand test. A checklist of things to test can be found in the Release Testing Checklist.

7.11 Build Windows installer


Note: This step requires a windows machine. 1. If necessary download and install NSIS. 2. Unzip the binary package. 3. Copy the les from release/installer/win to the root of the unpacked archive.

4. Right-click on the installer script geoserver.nsi and select Compile Script.

7.10. Hand test

27

GeoServer Developer Manual, Release 1.7.5

After successfully compiling the script an installer named geoserver-<VERSION>.exe will be located in the root of the unpacked archive.

7.12 Build Mac OS X installer


Note: This step requires a mac os machine. Change directory to release/installer/mac and follow the instructions in README.txt.

7.13 Release on Jira


Note: This step requires administrative privileges in Jira. 1. Log into GeoServer Jira. 2. Click the Administer Project link on the left hand side of the page.

28

Chapter 7. Release Guide

GeoServer Developer Manual, Release 1.7.5

3. Click the Mange link on the right hand side of the page.

4. Find the row for the version being released and click the Release link located on the right.

7.13. Release on Jira

29

GeoServer Developer Manual, Release 1.7.5

5. Move back any open issues to the next version, and click the Release button.

7.14 Upload release artifacts to SourceForge


1. Using WebDAV or SFTP connect to https://frs.sourceforge.net/<u>/<us>/<username>/uploads. Here <u> and <us> are the rst and and rst two characters of the username and <username> is the full user name. Example:
https://frs.sourceforge.net/j/js/jsmith/uploads

2. Copy all release artifacts to the uploads directory. Note: More information available in the SourceForge File System Release Guide.

7.15 Release on SourceForge


Note: This step requires administrative privileges in SourceForge.

7.15.1 Primary artifacts


1. Log in to SourceForge. 2. Go to the GeoServer SourceForge page. 3. Under the Admin tab select File Releases.

30

Chapter 7. Release Guide

GeoServer Developer Manual, Release 1.7.5

4. Click Add Release next to the GeoServer package.

5. Enter the release version and click the Create This Release button.

6. Copy the contents of the README (from previous step) into the Release Notes text box. 7. Generate the change log from jira (text format) and copy the contents into the Change Log text box. 8. Click the Preserve my pre-formatted text check box.

7.15. Release on SourceForge

31

GeoServer Developer Manual, Release 1.7.5

9. Click the Submit/Refresh button.

10. Scroll down to the Add Files To This Release section and check off all the primary artifacts. Warning: Be sure not to include the plugin artifacts in this step.

32

Chapter 7. Release Guide

GeoServer Developer Manual, Release 1.7.5

11. Click the Add Files and/or Refresh View button. 12. Scroll down to the Edit Files In This Release Section. 13. For the .dmg artifact set the Processor to i386 and the File Type to .dmg.

14. For the .exe artifact set the Processor to i386 and the File Type to .exe.. 15. For the src artifact set the Processor to Platform-Independent and the File Type to Source .zip. 16. For all other artifacts set the Processor to Platform-Independent and the File Type to .zip. Note: The processor and le type must be set one artifact at a time, clicking the the Update/Refresh button at each step. 7.15. Release on SourceForge 33

GeoServer Developer Manual, Release 1.7.5

7.15.2 Extension artifacts


Following steps from the previous section create a release of the GeoServer Extensions package consisting of all the plugin artifacts. A few things to note: The release version is the same as the primary artifact release. The Release Notes and Change Log may be omitted. Each plugin artifact is Platform-Independent and of le type .zip.

7.16 Create a download page


1. Go to http://geoserver.org/display/GEOS/Stable and log in. Note: If creating an experimental release, replace the above link with http://geoserver.org/display/GEOS/Latest 2. Click the Add Page link under the Page Operations menu. 3. Name the page GeoServer <VERSION>. 4. Click the Select a page template link.

5. Select Download and click the Next>> button. 6. Enter in the VERSION, DATE, JIRA_VERSION, and SF_RELEASE_ID. Note: The SF_RELEASE_ID is the release number assigned by SourceForge for the release created in the previous step. 7. Click the Insert Variables button. 8. Click the Save button.

7.17 Announce the release


7.17.1 Mailing lists
Send an email to both the developers list and users list announcing the release. The message should be relatively short, save the marketing for the blog post. The following is an example:

34

Chapter 7. Release Guide

GeoServer Developer Manual, Release 1.7.5

Subject: GeoServer 1.7.1 Released The GeoServer team is happy to announce the release of GeoServer 1.7.1. The release is available for download from: http://geoserver.org/display/GEOS/GeoServer+1.7.1 This release comes with some exciting new features. The new and noteworthy include: * * * * * * * * * KML Super Overlay and Regionating Support KML Extrude Support KML Reflector Improvements Mac OS X Installer Dutch Translation Improved Style for Web Admin Interface New SQL Server DataStore Extension Improved Oracle DataStore Extension Default Templates per Namespace

Along with many other improvements and bug fixes. The entire change log for the 1.7.1 series is available in the issue tracker: http://jira.codehaus.org/browse/GEOS/fixforversion/14502 A very special thanks to all those who contributed bug fixes, new features, bug reports, and testing to this release. -The GeoServer Team

7.17.2 SourceForge
1. Log in to SourceForge. 2. Edit the release, and scroll down to the bottom of the page. 3. Check the Im sure check box, and click the Send Notice button.

4. Repeat for the extension release.

7.17.3 GeoServer blog


Note: This step requires an account on http://blog.geoserver.org 1. Log into Wordpress. 2. Create a new post. The post should be more colorful than the average announcement. It is meant to market and show off any and all new features. Examples of previous posts: 7.17. Announce the release 35

GeoServer Developer Manual, Release 1.7.5

http://blog.geoserver.org/2008/12/09/geoserver-171-released/ http://blog.geoserver.org/2008/10/27/geoserver-170-released/ 3. Do not publish the post. Instead present it to the GeoServer outreach team for review, and they will publish it.

7.17.4 SlashGeo
Note: This step requires an account on http://slashgeo.org 1. Go to http://slashgeo.org, and log in, creating an account if necessary. 2. Click the Submit Story link on the left hand side of the page. Examples of previous stories: http://technology.slashgeo.org/technology/08/12/09/1745249.shtml http://industry.slashgeo.org/article.pl?sid=08/10/27/137216

7.17.5 FreeGIS
Send an email to bjoern dot broscheit at uni-osnabrueck dot de. Example:
Subject: GeoServer update for freegis GeoServer 1.7.1 has been released with some exciting new features. The big push for this release has been improved KML support. The new and noteworthy include: * * * * * * * * * KML Super Overlay and Regionating Support KML Extrude Support KML Reflector Improvements Mac OS X Installer Dutch Translation Improved Style for Web Admin Interface New SQL Server DataStore Extension Improved Oracle DataStore Extension Default Templates per Namespace

Along with many other improvements and bug fixes. The entire change log for the 1.7.1 series is available in the issue tracker: http://jira.codehaus.org/browse/GEOS/fixforversion/14502

7.17.6 FreshMeat
Note: This step requires an account on http://freshmeat.net/ 1. Go to http://freshmeat.net/ and log in. 2. Search for geoserver and click the resulting link. 3. Click the add release link at the top of the page. 4. Choose the Default branch 5. Enter the version and choose the appropriate Release focus. Note: The release focus is usually 4,5,6, or 7. Choose which ever is appropriate. 36 Chapter 7. Release Guide

GeoServer Developer Manual, Release 1.7.5

6. Enter a succinct description (less than 600 characters) of the Changes. 7. Update the links to: the Zip the OS X package the Changelog 8. Click the Step 3 button. 9. Click the Finish button.

7.17. Announce the release

37

Das könnte Ihnen auch gefallen