[英]How can I make makefile for java with external jar file?
我有一個java項目,需要編寫makefile讓它在Linux上運行。 我的項目包括外部jar文件和資源包(.txt資源)。我真的是Linux的新手,只是學習如何編寫makefile。
我引用一些材料並編寫一個這樣的makefile:
# Set the file name of your jar package:
JAR_PKG = ADBproject1.jar
# Set your entry point of your java app:
ENTRY_POINT = adb/Bing_WebResults/Run.java
# Need resource directory
RES_DIR = yes
SOURCE_FILES = \
adb/jsonModels/Metadata.java \
adb/jsonModels/Result.java \
adb/jsonModels/Data.java \
adb/jsonModels/DataContainer.java \
adb/models/Weight_ID.java \
adb/models/Pair.java \
adb/models/Document.java \
adb/models/Collections.java \
adb/Bing_WebResults/Bing_Search.java\
adb/Bing_WebResults/Run.java \
JAVAC = javac
JFLAGS = -encoding UTF-8
vpath %.class bin
vpath %.java src
# show help message by default
Default:
@echo "make new: new project, create src, bin, res dirs."
@echo "make build: build project."
@echo "make clean: clear classes generated."
@echo "make rebuild: rebuild project."
@echo "make run: run your app."
@echo "make jar: package your project into a executable jar."
build: $(SOURCE_FILES:.java=.class)
# pattern rule
%.class: %.java
$(JAVAC) -cp bin -d bin $(JFLAGS) $<
rebuild: clean build
.PHONY: new clean run jar
new:
ifeq ($(RES_DIR),yes)
mkdir -pv src bin res
else
mkdir -pv src bin
endif
clean:
rm -frv bin/*
run:
java -cp bin $(ENTRY_POINT)
jar:
ifeq ($(RES_DIR),yes)
jar cvfe $(JAR_PKG) $(ENTRY_POINT) -C bin . res
else
jar cvfe $(JAR_PKG) $(ENTRY_POINT) -C bin .
endif
但我不知道如何將這兩個外部.jar文件(gson.jar,commons.jar)添加到makefile中。 而且我不太確定我寫的文件路徑是否正確。
javac
有一個-cp
和-classpath
參數:
-classpath <path> Specify where to find user class files and
annotation processors
-cp <path> Specify where to find user class files and
annotation processors
就文檔而言,它們似乎是等價的。
我通過將所有* .jar文件添加到新文件夾“lib”來解決問題。 然后javac -sourcepath src/ -classpath lib/*.jar
將解決外部jar文件問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.