diff options
-rw-r--r-- | java.mvn.mk | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/java.mvn.mk b/java.mvn.mk new file mode 100644 index 0000000..45b7135 --- /dev/null +++ b/java.mvn.mk @@ -0,0 +1,59 @@ +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 $@ |