用于Java的Makefile

gnu make 你们有多少人有问题Java程序员编制程序? 图书馆内$ CLASSPATH中,千米参数传递给Java编译器。 即使是使用Java开发环境,情况并没有多大改善。 我们花了很多时间放慢参数和设置每次运行编译总是失去了一些东西!

你可以为避免这些问题的目的只是通过组织编写的Java源生成文件和使用。

什么是一个Makefile

生成文件是一个文件,它描述的步骤efftuare去文件,我们可以得到所有的树和依赖性的。 这是用在Unix平台和可用于编译每个节目类型。 该解释的makefile make实用程序和库的源代码编译为可执行程序和。

使用make优势

你们中许多人是使用每个原因很简单Java项目生成文件的生成文件要求您指定的文件之间的依赖关系,这当然是从项目到项目持怀疑态度的变化。 因此,我们应该写一对彼此我们的项目生成文件。 此限制可以通过编写一个makefile生成器克服困难是能够计算的项目的所有依赖完成用于在makefile moficare没有任何所有项目的相同的脚本。

当然不容忽视的优点是能够使恰可弥补。 请避免做已经完成,并没有与节省大量的时间一变。

由于只有一个makefile文件,您可以建立所有项目的来源。

如何使用

我写的Makefile构建Java项目可以使用无项目有一定的目录结构修改。 Java源应该有一个。Java中,对文件中的一个。类,1罐的库目录。
例如:

  | - Src的
 |` - 主要
 | | - 爪哇
 | |` - com公司
 | |` - 范例
 | | | - ExampleA.java
 | | | - ExampleB.java
 | |` - ExampleC.java
 |` - 资源
 |` - Res.java
 | - 班
 | - 利布斯
 | | - 一般
 | | | - 数据库
 | | | | - DB1.jar
 | | |` - DB2.jar
 |` - 测井
 |` - Log.jar
 | - 罐

要使用它,那么就写了下面的项目代码在Makefile文件中的根目录,目录名称验证的是,在文件中指定的类(。班;了SRC。利布斯用于Java瓶)和发射命令make
就是这样。 如果我们想要一个瓶子只包含整个项目运行make && make jar

生成文件

  
 #生成文件
 #作者:达尼洛阿巴夏诺
 

 #这里设置源目录的类
 CLASS_DIR =
钢骨混凝土= SOURCE_DIR
 JARS_DIR罐=

 find $ ( SOURCE_DIR ) - name "*.java" - printf % h\\n | sort | uniq | sed 's/$(SOURCE_DIR) \/ \? //' ) 子目录:= $($找到 (SOURCE_DIR) -名字“*. java的” - printf%的H \ ñ |类别|的uniq |桑达'的S / $(SOURCE_DIR)\ / \?/ /')

 local / java / bin设置JAVA_HOME = / USR的/地方/爪哇/ 场#编译器
 JDEBUGFLAGS =#- G的自谦
 JDEBUGFLAGS =#- O型取决于- nowarn
 ) / javac杰希希= $(JAVA_HOME设置)/ javac的

 clean classes compile jar 假:清洁编译罐类

 到:
	 SUBDIRS ) ; do \ @ 子目录@(对p在$);做\
		 p ; \回声'编译 '$ $ 磷; \
		 $$ p ; \ 出口膈下= $ p $为,\
		 print - directory compile ; \--印刷-编译目录,\
	

 清洁:
	 f * ~ *. class *. bak $ ( foreach dir ,$ ( SUBDIRS ) ,$ ( CLASS_DIR ) /$ ( dir ) /*. class ) --的f *〜*. bak的*.$(的foreach目录,$(子目录)$(CLASS_DIR)/ $(目录)/ *.类)


 ) /$ ( SUBDIR ) LOCAL_CLASS_DIR = $(CLASS_DIR)/ $(徐猛)
 ) /$ ( SUBDIR ) LOCAL_SOURCE_DIR = $(SOURCE_DIR)/ $(徐猛)

 罐子:
	 ) ; jar - cf ../$ ( JARS_DIR ) / project . jar *光盘$(CLASS_DIR)-比照.. / $(JARS_DIR)/项目。*

 补:

 #创建目录不存在,如果目标类。
 ) : $(LOCAL_CLASS_DIR):
	 LOCAL_CLASS_DIR ) mkdir -为$ p(LOCAL_CLASS_DIR)


 新规则对Java#
 后缀:
 java . class 后缀:。 爪哇。 #这告诉作出神奇命令查找目录中的另一个类文件
 class $ ( LOCAL_CLASS_DIR ) vpath%。$(LOCAL_CLASS_DIR)
 java $ ( LOCAL_SOURCE_DIR ) vpath%。爪哇$(LOCAL_SOURCE_DIR)

 #类路径,所有英寸/瓶和。/利布斯
 ) :$ ( SOURCE_DIR ) :$ ( subst . jar ,. jar :,$ ( wildcard libs /*. jar libs /*/*. jar libs /*/*/*. jar jars /*. jar ) ) LIBCLASSPATH:= $(CLASS_DIR):$(SOURCE_DIR):$(subst.罐。罐:$(通配符 LIBS技术/ *.罐LIBS技术LIBS技术/*/*/*. /*/*.罐瓶瓶/ * 。罐))

 #编译器命令
 class : 。爪哇。类别:
	 ) $ ( JCC ) - nowarn - d $ ( CLASS_DIR ) $ ( JDEBUGFLAGS ) $<的CLASSPATH = $(LIBCLASSPATH)$(联协会) - nowarn - d的 $(CLASS_DIR)$(JDEBUGFLAGS)$ <

 #找出目标文件
 $ ( LOCAL_SOURCE_DIR ) /*. java ) PATHFILES = $(通配符 $(LOCAL_SOURCE_DIR)/ *. java的)
 $ ( LOCAL_SOURCE_DIR ) /,,$ ( PATHFILES ) )文件= $($ 实名词 (LOCAL_SOURCE_DIR)/,,$(PATHFILES))
 java =. class ) 类:$(文件:。爪哇=.类) 

良好的汇编。

2009年5月26日 •标签: •发布于: 电脑爪哇编程

一对“Makefile中的Java”

  1. thegamer - 2009年8月28日

    我还是喜欢蚂蚁!
    你应该去看看...

留下一个回复