2012-10-02 79 views
0

我有一個java項目,需要編寫makefile讓它在Linux上運行。我的項目包括外部jar文件和資源包(.txt資源)。我真的是Linux的新手,只是學習如何編寫makefile。如何使用外部jar文件爲java創建makefile?

My project structure

我指的是一些材料,寫這樣的生成文件:

# 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,公地。 jar)轉換成makefile。我不太確定,我寫的文件路徑是否正確。

回答

1

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 

他們似乎等同至於文件而言。

1

我通過將所有* .jar文件添加到新文件夾「lib」來解決該問題。 然後 javac -sourcepath src/ -classpath lib/*.jar 將解決外部jar文件問題。

相關問題