blob: 864f6decd2269293f4c060f8b7209dae8123332e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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: .classpath ${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 $@
|