![]() | Java程序员中有多少人已编译程序的问题? 出库$ CLASSPATH中,里程参数传递给Java编译器。 即使使用的Java开发工具,情况没有改善多少。 我们花了很多时间,设置paramteri和我们每次推出汇编总是缺少的东西! |
你能避免所有这些问题的根本组织Java源代码,并使用书面特设一个Makefile。
什么是一个Makefile
一个Makefile是描述的的步骤efftuare文件,我们会得到的树和其所有相关的文件。 它被广泛用于在基于Unix的平台,可以用来建立任何类型的程序。 Makefile和make实用程序的解释编译为可执行程序和库的源代码。
利用优势
你们中许多人会怀疑是每个Java项目中使用的makefile需要指定文件之间的依赖关系,原因很简单,一个makefile,它一定会改变,从项目到项目。 所以,我们应该为每一个项目的不同写一个makefile。 写一个makefile通用的,可以克服这种限制,可以计算出该项目的所有以没有moficare任何在makefile中的所有项目使用相同的脚本完成的依赖。
当然不可忽略的一个优点是能够使只填写必要的。 从而避免了compiare已经完成,并节省大量的时间尚未修改。
只用一个makefile文件可以编译该项目的所有来源。
如何使用
我写的Makefile来编译Java项目可以使用,无需修改的项目有一定的目录结构。 Java源代码中必须有一个Java中,一个文件的目录。类,和一罐库的。
例如:
| - Src的 |` - 主 | | - JAVA | |` - COM | |` - 范例 | | | - ExampleA.java | | | - ExampleB.java | |` - ExampleC.java |` - 资源 |` - Res.java | - 类 | - LIBS | | - | | | - 数据库 | | | | - DB1.jar | | |` - DB2.jar |` - 记录 |` - Log.jar | - 罐
使用它,然后写以下根目录项目中的Makefile中的代码,验证,目录的名称是在文件中指定(对于类类;。。对JAVA和JAR LIBS SRC)和启动指挥make
这一切。 如果我们只是希望整个项目包含一个jar make && make jar make make && make jar
Makefile文件
# #Makefile文件 #作者:达尼洛Abbasciano # #这里设置类和源目录 = CLASS_DIR类 SRC = SOURCE_DIR JARS_DIR =罐 find $ ( SOURCE_DIR ) - name "*.java" - printf % h\\n | sort | uniq | sed 's/$(SOURCE_DIR) \/ \? //' ) SUBDIRS:= $(壳找到$(SOURCE_DIR) - 名称“* Java的。” - printf的%H \ \ N |排序| uniq的|桑达'S / $(SOURCE_DIR)的\ / \ / /?“) local / java / bin的JAVA_HOME = / USR /本地/ JAVA /斌 #编译器领域 #JDEBUGFLAGS =-G-弃用 #JDEBUGFLAGS =-O型取决于nowarn ) / javac 江铜= $(的JAVA_HOME)/ javac的 clean classes compile jar 假:清洁编译的JAR类 到: SUBDIRS ) ; do \ @ @ $ P(SUBDIRS);做\ 回声“编译”; \ 出口子目录=“/> P,\ print - directory compile ; \ -不-印刷-编译目录,\ 完成 清洁: f * ~ *. class *. bak $ ( foreach dir ,$ ( SUBDIRS ) ,$ ( CLASS_DIR ) /$ ( dir ) /*. class ) -室- F *〜*类朴$(DIR的foreach $(SUBDIRS)$(CLASS_DIR)/ $(DIR)/ *类)。 ) /$ ( SUBDIR ) LOCAL_CLASS_DIR = $(CLASS_DIR)/ $(子目录) ) /$ ( SUBDIR ) LOCAL_SOURCE_DIR = $(SOURCE_DIR)/ $(子目录) jar文件: ) ; jar - cf ../$ ( JARS_DIR ) / project . jar * CD $(CLASS_DIR)的罐子 -比照.. / $(JARS_DIR)/项目的jar *。 编译:班 #如果不存在,创建的DIR目标类。 ) : $(LOCAL_CLASS_DIR): LOCAL_CLASS_DIR ) MKDIR - P $(LOCAL_CLASS_DIR) #为Java的新规则 。SUFFIXES的: java . class 。SUFFIXES的。Java类 #那神奇的命令告诉make找到类文件在另一个目录 class $ ( LOCAL_CLASS_DIR ) VPATH%。类$(LOCAL_CLASS_DIR) java $ ( LOCAL_SOURCE_DIR ) VPATH%。JAVA $(LOCAL_SOURCE_DIR) #CLASSPATH,英寸/瓶/ LIBS ) :$ ( SOURCE_DIR ) :$ ( subst . jar ,. jar :,$ ( wildcard libs /*. jar libs /*/*. jar libs /*/*/*. jar jars /*. jar ) ) LIBCLASSPATH:= $(CLASS_DIR):$(SOURCE_DIR):$(subst.罐瓶,$(的通配符库/ * JAR库/ * / *瓶库/ * / * / *一罐/ *。 。JAR)) #命令compil class : Java类: ) $ ( JCC ) - nowarn - d $ ( CLASS_DIR ) $ ( JDEBUGFLAGS ) $< (LIBCLASSPATH)的CLASSPATH = $ $(JCC) - nowarn - D $(CLASS_DIR)的$(JDEBUGFLAGS)$ < #找出目标文件 $ ( LOCAL_SOURCE_DIR ) /*. java ) PATHFILES = $(的通配符美元(LOCAL_SOURCE_DIR)/ *。的Java) $ ( LOCAL_SOURCE_DIR ) /,,$ ( PATHFILES ) ) 文件= $(SUBST $(LOCAL_SOURCE_DIR)的/,$(PATHFILES)) java =. class ) 类:$(文件:。= java类)
良好的汇编。





我更喜欢蚂蚁!
你应该尝试一下......