After 10+ years of being a professional software engineer, I have remarkably little to show for it. No blog posts, no source code on github, no (recorded) talks at conferences. This project will squash the first two, and who knows in the end I will have something interesting to say about it at a conference as well ;).

Aside from building a portfolio, I will use this project to gain experience with some technologies/approaches I have not had a chance to use in my everyday job. The technologies that have my interest are Kotlin, Google App Engine, Sparkjava, undertow, Vaadin 10 and java 9 modules.

How I got this far

Set up a google cloud account & install google cloud SDK.
Create a pom.xml like this:


<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>

    <groupId>eu.joostbaas</groupId>
    <artifactId>blog</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>
        

Create a src/main/webapp/WEB-INF/appengine-web.xml file with these contents:


<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <runtime>java8</runtime>
    <threadsafe>true</threadsafe>
</appengine-web-app>
        

Create a static index.html file in src/main/webapp with whatever contents you want.


$ echo "hello world!" > src/main/webapp/index.html
        

Then deploy as your pre-configured appengine standard app using maven:


$ mvn -Dapp.deploy.projectId=joost-baas-blog \
-Dapp.deploy.version=$(date "+%Y%m%d-%H%M") \
clean package \
com.google.cloud.tools:appengine-maven-plugin:deploy