Skip to content

Commit cecf140

Browse files
author
Cosmin Stroe
committed
Initial commit.
0 parents  commit cecf140

File tree

12 files changed

+636
-0
lines changed

12 files changed

+636
-0
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
/.idea/
3+
/*.iml
4+
5+
/target/

.mvn/wrapper/maven-wrapper.jar

46.7 KB
Binary file not shown.

.mvn/wrapper/maven-wrapper.properties

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip

Dockerfile

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM java:8
2+
3+
ENTRYPOINT ["/usr/bin/java", "-cp", "/opt/app/*:/opt/app/lib/*", "com.github.cstroe.example.Main"]
4+
EXPOSE 8080
5+
6+
# Add Maven dependencies (not shaded into the artifact; Docker-cached)
7+
ADD target/dependency /opt/app/lib
8+
9+
# Add the service itself
10+
ADD target/app.jar /opt/app/app.jar
11+

README.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# maven-docker-compose-example-project
2+
3+
An example project showing how to run integration tests for a Java project using Maven.
4+
The integration test environment is defined in the `docker-compose.yml`.
5+
The app under test is packaged into a docker container via the `Dockerfile`
6+
7+
## Usage
8+
9+
```
10+
./mvnw clean package
11+
```
12+
13+
## Links
14+
* [dockerfile-maven-plugin](https://www.github.com/spotify/dockerfile-maven) - Invokes `docker` to build this app's container
15+
* [docker-compose-maven-plugin](https://github.com/dkanejs/docker-compose-maven-plugin) - Invokes `docker-compose` to start a test environment
16+
* [SO maven-jar-plugin finalName](https://stackoverflow.com/questions/4238944/controlling-maven-final-name-of-jar-artifact) - Rename final artifact
17+
* [maven-failsafe-plugin](https://maven.apache.org/surefire/maven-failsafe-plugin/) - Maven Failsafe Plugin for running integration tests

docker-compose.yml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
version: "2.1"
2+
services:
3+
test-app:
4+
build: .
5+
ports:
6+
- 8080:8080

mvnw

+227
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
#!/bin/sh
2+
# ----------------------------------------------------------------------------
3+
# Licensed to the Apache Software Foundation (ASF) under one
4+
# or more contributor license agreements. See the NOTICE file
5+
# distributed with this work for additional information
6+
# regarding copyright ownership. The ASF licenses this file
7+
# to you under the Apache License, Version 2.0 (the
8+
# "License"); you may not use this file except in compliance
9+
# with the License. You may obtain a copy of the License at
10+
#
11+
# http://www.apache.org/licenses/LICENSE-2.0
12+
#
13+
# Unless required by applicable law or agreed to in writing,
14+
# software distributed under the License is distributed on an
15+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16+
# KIND, either express or implied. See the License for the
17+
# specific language governing permissions and limitations
18+
# under the License.
19+
# ----------------------------------------------------------------------------
20+
21+
# ----------------------------------------------------------------------------
22+
# Maven2 Start Up Batch script
23+
#
24+
# Required ENV vars:
25+
# ------------------
26+
# JAVA_HOME - location of a JDK home dir
27+
#
28+
# Optional ENV vars
29+
# -----------------
30+
# M2_HOME - location of maven2's installed home dir
31+
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
32+
# e.g. to debug Maven itself, use
33+
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34+
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35+
# ----------------------------------------------------------------------------
36+
37+
if [ -z "$MAVEN_SKIP_RC" ] ; then
38+
39+
if [ -f /etc/mavenrc ] ; then
40+
. /etc/mavenrc
41+
fi
42+
43+
if [ -f "$HOME/.mavenrc" ] ; then
44+
. "$HOME/.mavenrc"
45+
fi
46+
47+
fi
48+
49+
# OS specific support. $var _must_ be set to either true or false.
50+
cygwin=false;
51+
darwin=false;
52+
mingw=false
53+
case "`uname`" in
54+
CYGWIN*) cygwin=true ;;
55+
MINGW*) mingw=true;;
56+
Darwin*) darwin=true
57+
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58+
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59+
if [ -z "$JAVA_HOME" ]; then
60+
if [ -x "/usr/libexec/java_home" ]; then
61+
export JAVA_HOME="`/usr/libexec/java_home`"
62+
else
63+
export JAVA_HOME="/Library/Java/Home"
64+
fi
65+
fi
66+
;;
67+
esac
68+
69+
if [ -z "$JAVA_HOME" ] ; then
70+
if [ -r /etc/gentoo-release ] ; then
71+
JAVA_HOME=`java-config --jre-home`
72+
fi
73+
fi
74+
75+
if [ -z "$M2_HOME" ] ; then
76+
## resolve links - $0 may be a link to maven's home
77+
PRG="$0"
78+
79+
# need this for relative symlinks
80+
while [ -h "$PRG" ] ; do
81+
ls=`ls -ld "$PRG"`
82+
link=`expr "$ls" : '.*-> \(.*\)$'`
83+
if expr "$link" : '/.*' > /dev/null; then
84+
PRG="$link"
85+
else
86+
PRG="`dirname "$PRG"`/$link"
87+
fi
88+
done
89+
90+
saveddir=`pwd`
91+
92+
M2_HOME=`dirname "$PRG"`/..
93+
94+
# make it fully qualified
95+
M2_HOME=`cd "$M2_HOME" && pwd`
96+
97+
cd "$saveddir"
98+
# echo Using m2 at $M2_HOME
99+
fi
100+
101+
# For Cygwin, ensure paths are in UNIX format before anything is touched
102+
if $cygwin ; then
103+
[ -n "$M2_HOME" ] &&
104+
M2_HOME=`cygpath --unix "$M2_HOME"`
105+
[ -n "$JAVA_HOME" ] &&
106+
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107+
[ -n "$CLASSPATH" ] &&
108+
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109+
fi
110+
111+
# For Mingw, ensure paths are in UNIX format before anything is touched
112+
if $mingw ; then
113+
[ -n "$M2_HOME" ] &&
114+
M2_HOME="`(cd "$M2_HOME"; pwd)`"
115+
[ -n "$JAVA_HOME" ] &&
116+
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117+
# TODO classpath?
118+
fi
119+
120+
if [ -z "$JAVA_HOME" ]; then
121+
javaExecutable="`which javac`"
122+
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
123+
# readlink(1) is not available as standard on Solaris 10.
124+
readLink=`which readlink`
125+
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
126+
if $darwin ; then
127+
javaHome="`dirname \"$javaExecutable\"`"
128+
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
129+
else
130+
javaExecutable="`readlink -f \"$javaExecutable\"`"
131+
fi
132+
javaHome="`dirname \"$javaExecutable\"`"
133+
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
134+
JAVA_HOME="$javaHome"
135+
export JAVA_HOME
136+
fi
137+
fi
138+
fi
139+
140+
if [ -z "$JAVACMD" ] ; then
141+
if [ -n "$JAVA_HOME" ] ; then
142+
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
143+
# IBM's JDK on AIX uses strange locations for the executables
144+
JAVACMD="$JAVA_HOME/jre/sh/java"
145+
else
146+
JAVACMD="$JAVA_HOME/bin/java"
147+
fi
148+
else
149+
JAVACMD="`which java`"
150+
fi
151+
fi
152+
153+
if [ ! -x "$JAVACMD" ] ; then
154+
echo "Error: JAVA_HOME is not defined correctly." >&2
155+
echo " We cannot execute $JAVACMD" >&2
156+
exit 1
157+
fi
158+
159+
if [ -z "$JAVA_HOME" ] ; then
160+
echo "Warning: JAVA_HOME environment variable is not set."
161+
fi
162+
163+
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
164+
165+
# traverses directory structure from process work directory to filesystem root
166+
# first directory with .mvn subdirectory is considered project base directory
167+
find_maven_basedir() {
168+
169+
if [ -z "$1" ]
170+
then
171+
echo "Path not specified to find_maven_basedir"
172+
return 1
173+
fi
174+
175+
basedir="$1"
176+
wdir="$1"
177+
while [ "$wdir" != '/' ] ; do
178+
if [ -d "$wdir"/.mvn ] ; then
179+
basedir=$wdir
180+
break
181+
fi
182+
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
183+
if [ -d "${wdir}" ]; then
184+
wdir=`cd "$wdir/.."; pwd`
185+
fi
186+
# end of workaround
187+
done
188+
echo "${basedir}"
189+
}
190+
191+
# concatenates all lines of a file
192+
concat_lines() {
193+
if [ -f "$1" ]; then
194+
echo "$(tr -s '\n' ' ' < "$1")"
195+
fi
196+
}
197+
198+
BASE_DIR=`find_maven_basedir "$(pwd)"`
199+
if [ -z "$BASE_DIR" ]; then
200+
exit 1;
201+
fi
202+
203+
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
204+
if [ "$MVNW_VERBOSE" = true ]; then
205+
echo $MAVEN_PROJECTBASEDIR
206+
fi
207+
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
208+
209+
# For Cygwin, switch paths to Windows format before running java
210+
if $cygwin; then
211+
[ -n "$M2_HOME" ] &&
212+
M2_HOME=`cygpath --path --windows "$M2_HOME"`
213+
[ -n "$JAVA_HOME" ] &&
214+
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
215+
[ -n "$CLASSPATH" ] &&
216+
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
217+
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
218+
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
219+
fi
220+
221+
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
222+
223+
exec "$JAVACMD" \
224+
$MAVEN_OPTS \
225+
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
226+
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
227+
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

0 commit comments

Comments
 (0)