ARTIFACT_ID != xmllint --xpath "/*[local-name()='project']/*[local-name()='artifactId']/text()" pom.xml VERSION != xmllint --xpath "/*[local-name()='project']/*[local-name()='version']/text()" pom.xml JAVA_VERSION != xmllint --xpath "/*[local-name()='project']/*[local-name()='properties']/*[local-name()='java.version']/text()" pom.xml JC = JAVA_VERSION=${JAVA_VERSION} javac MVN = mvn JAVA = JAVA_VERSION=${JAVA_VERSION} java -classpath `cat .classpath` JDB = jdb BUILD_DIR = target JAR = ${BUILD_DIR}/${ARTIFACT_ID}-${VERSION}.jar MVN_FLAGS = DBG_PORT = 1044 SRC_PATH = src/main/java SRC != find src -name '*.java' OBJ != find src -name '*.java' | sed -E 's/^src\/main\/java/target\/classes/g' | sed -E 's/^src\/test\/java/target\/test-classes/g' | sed -E 's/\.java$$/\.class/g' DBG_PORT = 1044 DBG_FLAGS = -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${DBG_PORT} all: ${OBJ} run: .classpath .main-class ${JAVA} `cat .main-class` ${ARGS} debug: .classpath .main-class ${JAVA} ${DBG_FLAGS} `cat .main-class` ${ARGS} debugger: ${JDB} -sourcepath ${SRC_PATH} -attach ${DBG_PORT} .main-class: @echo ${SRC} | tr ' ' '\n' | fzf | sed -E 's/.*java\/(.*)\.java/\1/g' | tr '/' '.' > $@ .classpath: pom.xml ${MVN} ${MVN_FLAGS} dependency:build-classpath -Dmdep.outputFile=$@ @echo -n ':'target/classes >> $@ .classes: ${SRC} for jar in `cat .classpath | tr ':' '\n' | grep -E '\.jar$$'`; do \ jar tvf $$jar | awk '{ print $$8 }'; \ done | grep -E '\.class$$' | grep -v package-info.class | sed -E 's/\$$[0-9]*//g' | sort | uniq > $@ @echo ${SRC} | tr ' ' '\n' >> $@ clean: @rm -rf ${BUILD_DIR} buildmk: @for i in `find src -name *.java`; do \ echo -n $$i | sed -E 's/^src\/main\/java(.*).java/target\/classes\1\.class: /g' | sed -E 's/^src\/test\/java(.*).java/target\/test-classes\1\.class: /g'; \ echo $$i; \ echo -n ' $${JC} -classpath `cat .classpath` '; \ echo $$i; \ echo ' mkdir -p `dirname $$@`'; \ echo -n ' mv ';\ echo $$i | sed 's/\.java$$/.class $$@/g'; \ echo ''; \ done > objs.mk .tags: exctags -Rnf $@