Skip to content

Instantly share code, notes, and snippets.

View jesperfj's full-sized avatar

Jesper Joergensen jesperfj

View GitHub Profile
$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>>
[INFO] 
@jesperfj
jesperfj / compile
Created October 5, 2011 23:00
gradle LP
#!/usr/bin/env bash
# bin/compile <build-dir> <cache-dir>
# fail fast
set -e
BIN_DIR=$(cd $(dirname $0); pwd) # absolute path
# parse args
BUILD_DIR=$1
CACHE_DIR=$2
@jesperfj
jesperfj / spark.md
Created September 16, 2011 18:19
Spark on Heroku

This guide will get you started using Spark on Heroku/Cedar. Spark is basically a clone of Sinatra for Java. 'Nuff said.

Create your app

Create a single Java main class in src/main/java/HelloWorld.java:

:::java
import static spark.Spark.*;
import spark.*;
@jesperfj
jesperfj / compile
Created September 15, 2011 17:45
Grails LP
#!/usr/bin/env bash
# bin/compile <build-dir> <cache-dir>
# fail fast
set -e
BIN_DIR=$(cd $(dirname $0); pwd) # absolute path
# parse args
BUILD_DIR=$1
CACHE_DIR=$2
@jesperfj
jesperfj / embedded_jetty.md
Created June 29, 2011 17:43
Embedded Jetty Archetype

A better way to set up Java web apps

If you're building a Java web app that you yourself or your organization will be deploying then you can save yourself a lot of trouble by avoiding the whole build-to-war + deploy-to-server approach. Instead, you should build your web app as a normal Java application with an embedded web app server. Don't build a WAR, just compile the code and serve the files out of their source location. This has the following advantages:

  • You can code and test iteratively because you don't have to copy files and create war packages every time you make a change. This is similar to what the mvn jetty:run command is being used for by many developers today.
  • You run the same exact code in production as you do in development. Hopefully I don't have to elaborate on the advantages of that. Most developers today use mvn jetty:run or similar to achieve a quick, iterative dev cycle. But come time for deployment, they build a WAR and throw it over the wall to be deployed in some app server
@jesperfj
jesperfj / gist:1026008
Created June 14, 2011 21:53
Getting the Class-Path manifest attribute from the jar file that this class belongs to
java.util.jar.JarFile jar =
new java.util.jar.JarFile((thispackage.ThisClass.class.getProtectionDomain()
.getCodeSource().getLocation()).getFile());
System.out.println(jar.getManifest().getMainAttributes().getValue("Class-Path"));
@jesperfj
jesperfj / newproject.sh
Created May 13, 2011 17:58
Create a new Database.com Spring Web App from a maven archetype
mvn archetype:generate -DarchetypeCatalog=http://repo.t.salesforce.com/archiva/repository/releases/archetype-catalog.xml -DarchetypeGroupId=com.force.sdk -DarchetypeArtifactId=springmvc-archetype