Hi Jake, Thank you very much for your reply, this is exactly what I was looking for. And since I am also using on MacOS it should be really easy to setup with the information you gave ;).
Cheers, Maurits On Jan 21, 8:03 pm, Jake <[email protected]> wrote: > Hi Maurits, > > I've achieved what you're looking for, but it wasn't easy. If anyone > has a better solution, I'm all ears. > > First of all, to do it manually, you can Right-click any project in > Eclipse and Export it to a JAR file - which can then be saved in your > GAE lib/ folder. But, this has to be done each time you make a > change. > > I'm currently using Maven in Eclipse to manage and build my projects > (this copies those external JAR files each time) and then the maven- > antrun-plugin to call the GAE command line scripts that run/upload my > project. Now that it's set up, it is a single click to run/upload, > despite being dependent on several other Eclipse Projects and 3rd > Party plugins. > > This website was the most helpful in setting that > up:http://twelves.blogspot.com/2009/04/google-appengine-maven-pom.html > > Most notably, I did not use the maven-gae-plugin that is mentioned > frequently around the interwebs - I was never able to get it working > properly. > > I've pasted the applicable bits of my Maven POM file below - that > might be helpful. This is all based on MacOS commands, but I believe > Windows is similar. If you choose not to use Maven, the applicable > ANT bits will still be helpful. > > Good Luck! > > Jake > > <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.0http://maven.apache.org/maven-v4_0_0.xsd"> > <groupId>org.example</groupId> > <artifactId>project</artifactId> > <packaging>war</packaging> > > <properties> > <gae.sdk.location>/Applications/eclipse/plugins/ > com.google.appengine.eclipse.sdkbundle.1.3.0_1.3.0.v200912141120/ > appengine-java-sdk-1.3.0</gae.sdk.location> > </properties> > > <repositories> > <repository> > <id>MVNSearch</id> > <name>MVNSearch</name> > <url>http://www.mvnsearch.org/maven2</url> > </repository> > <repository> > <id>DataNucleus</id> > > <url>http://www.datanucleus.org/downloads/maven2/</url> > </repository> > </repositories> > > <dependencies> > <dependency> > <groupId>com.google.appengine</groupId> > <artifactId>appengine-api-1.0-labs</artifactId> > <version>1.3.0</version> > </dependency> > <dependency> > <groupId>com.google.appengine.orm</groupId> > <artifactId>datanucleus-appengine</artifactId> > <version>1.0.4.1</version> > <exclusions> > <exclusion> > > <artifactId>datanucleus-core</artifactId> > <groupId>org.datanucleus</groupId> > </exclusion> > </exclusions> > </dependency> > <dependency> > <groupId>org.datanucleus</groupId> > <artifactId>datanucleus-core</artifactId> > <version>1.1.6</version> > </dependency> > <dependency> > <groupId>org.datanucleus</groupId> > <artifactId>datanucleus-jpa</artifactId> > <version>1.1.5</version> > </dependency> > <dependency> > <groupId>org.example</groupId> > <artifactId>otherproject</artifactId> > <version>0.0.1-SNAPSHOT</version> > </dependency> > </dependencies> > > <build> > <finalName>${project.artifactId}</finalName> > <resources> > <resource> > <filtering>false</filtering> > <directory>src/main/resources</directory> > </resource> > <resource> > <filtering>false</filtering> > <directory>src/main/java</directory> > <includes> > <include>**</include> > </includes> > <excludes> > <exclude>**/*.java</exclude> > </excludes> > </resource> > <resource> > <directory>src/main/webapp/</directory> > <includes> > <include>**/*.xml</include> > </includes> > </resource> > </resources> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-war-plugin</artifactId> > <configuration> > > <warSourceDirectory>${basedir}/src/main/webapp</ > warSourceDirectory> > </configuration> > </plugin> > <plugin> > <groupId>org.datanucleus</groupId> > > <artifactId>maven-datanucleus-plugin</artifactId> > <version>1.1.4</version> > <configuration> > <excludes> > > <exclude>org.datanucleus:datanucleus-core</exclude> > > <exclude>org.datanucleus:datanucleus-jpa</exclude> > </excludes> > <verbose>true</verbose> > <api>JPA</api> > <mappingIncludes>**/*.jdo, > **/model/**.class, **/*.class</ > mappingIncludes> > <enhancerName>ASM</enhancerName> > </configuration> > <executions> > <execution> > <id>compile</id> > <phase>compile</phase> > <goals> > <goal>enhance</goal> > </goals> > </execution> > </executions> > </plugin> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-antrun-plugin</artifactId> > <executions> > <execution> > <id>Kill</id> > <phase>clean</phase> > <configuration> > <tasks > if="appengine.kill"> > <echo > message="Killing previous server (if any)" /> > <exec > executable="sh"> > <arg > value="-c" /> > <arg > value="ps ax | grep com.google.appengine.tools.KickStart > | grep -v grep | awk '{print $1}' | xargs kill" /> > </exec> > </tasks> > </configuration> > <goals> > <goal>run</goal> > </goals> > </execution> > <execution> > <id>Upload</id> > <phase>install </phase> > <configuration> > <tasks > if="appengine.upload"> > <echo > message="Uploading to Google App Engine..." /> > <java > fork="false" > classname="com.google.appengine.tools.admin.AppCfg"> > > <sysproperty key="appengine.sdk.root" value="$ > {gae.sdk.location}" /> > > <classpath> > > <fileset dir="${gae.sdk.location}"> > > <include name="**/*.jar" /> > > </fileset> > > </classpath> > <arg > value="--passin" /> > <arg > value="update" /> > <arg > value="${basedir}/target/${project.artifactId}" /> > </java> > </tasks> > </configuration> > <goals> > <goal>run</goal> > </goals> > </execution> > <execution> > <id>Start</id> > <phase>install </phase> > <configuration> > <tasks > if="appengine.start"> > <echo > message="Starting Local Google Server..." /> > <java > fork="true" > classname="com.google.appengine.tools.KickStart" > > classpath="${gae.sdk.location}/lib/appengine-tools-api.jar" > > failonerror="true"> > <arg > value="com.google.appengine.tools.development.DevAppServerMain" /> > <arg > value="${basedir}/target/${project.artifactId}" /> > </java> > </tasks> > </configuration> > <goals> > <goal>run</goal> > </goals> > </execution> > <!-- Connect to Debug in Eclipse by > using Run->Debug->Remote Java > Application (using default properties) in Eclipse. --> > <execution> > <id>Debug</id> > <phase>install </phase> > <configuration> > <tasks > if="appengine.debug"> > <echo > message="Starting Local Google Server with Debugging > Enabled..." /> > <java > fork="true" > classname="com.google.appengine.tools.KickStart" > > classpath="${gae.sdk.location}/lib/appengine-tools-api.jar" > > failonerror="false"> > <arg > line="--jvm_flag=-Xdebug --jvm_flag=- > Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n > com.google.appengine.tools.development.DevAppServerMain ${basedir}/ > target/${project.artifactId}" /> > </java> > </tasks> > </configuration> > <goals> > <goal>run</goal> > </goals> > </execution> > </executions> > <version>1.3</version> > </plugin> > </plugins> > </build> > > </project> > > On Jan 21, 4:42 am, Maurits <[email protected]> wrote: > > > > > Hi all, > > > I am an experienced .NET developer but new to JAVA and Eclipse. I am > > currently experimenting with JAVA and the GAE with plans to start > > making more use of the GAE since I really like what is offered (Google > > keep up the good work ;)). > > > However I am running into a problem, I would like to build an > > application using multiple layers (currently a Presentation layer, > > Service layer, Business layer and a Data layer). My presentation layer > > is a GAE project created using the Eclipse plug-in, the other layers > > are all normal JAVA projects I created in the same workspace (so I > > have 4 separate projects). Now I managed to get everything compile > > correctly by referencing all projects with each other using the Java > > Build Path -> Projects dialog window. > > > However when I run the application I run into the problem that the > > Presentation layer cannot find the classed from my Service layer > > project. I figured out that I need to manually copy the output classes > > from the Service (and others) layer into the WEB-INF/lib folder to get > > it working (preferably packed into a JAR file). > > > My question is, can this be somehow automated? I read some information > > about using an ANT script to do so, but since I am a bit spoiled with > > Visual Studio (who does this automatically when I make the reference) > > I have no clue on how to start, I don't even know how to automatically > > pack the class files from the Service, Business and Data layers into a > > JAR file. > > > Is there someone who can get me started? > > > Many thanks, > > > Maurits -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
