我有make(Windows SDK),nmake(Visual Studio)和make(CodeGear)
我使用哪个版本的make来编译Java应用程序?我从哪里得到这个"制造"?我下载了JDK并且没有make.我四处寻找编译Java makefile的东西.
你用什么,如果你有一个Makefile和一些*.java文件?
Java项目很少使用make和makefile.事实上,我在实践中只看过一次这种情况,那是13年前,早于Java构建工具.相反,Java项目使用两种主要构建工具之一.
基于你的问题,我将假设你没有特别的理由使用make(因为你没有尝试编译只有Makefile的现有项目).
Ant是一种基于XML的脚本构建工具,它在概念上与makefile有一点(但不是很多)相似之处.Ant构建脚本将定义许多任务.这些任务将取决于其他任务.任务可以包括编译Java源文件,构建jar和任何你真正喜欢的东西.
Ant非常灵活,但你最终还是会一遍又一遍地编写一些样板(在项目之间).没有两个中等复杂的Ant项目是相同的,依赖性可能成为一个巨大的问题.通过"依赖",我不是在谈论源依赖,而是依赖于第三方库.Ant还有另一个名为Ivy的工具,用于管理依赖项.
Maven是另一种常见的构建工具.Maven与Ant的不同之处在于Maven定义了项目类型(原型),例如Web应用程序.当您为项目选择一个(或多个)原型时,它要求一个非常深的目录结构.例如:
project-name
+- src/
+- main/
+- java/
+- com/example/project-name/
+- Java source files
+- test/
+- tends to mirror above
+- target/
+- classes/
+- com/example/project-name/
+- Java class files
+- test-classes/
+- tends to mirror above
...etc...
Run Code Online (Sandbox Code Playgroud)
现在有些人不喜欢这样,部分原因是因为有些人不喜欢被告知要做什么(imho),而是因为遗留原因和其他因素.我个人认为这是一件好事,因为一旦你熟悉任何Maven Web应用程序项目,你就可以去任何其他Maven Web应用程序项目并找到自己的方法.
Maven还会为您提供许多标准命令来运行,例如编译,测试,安装等.
Maven对于依赖第三方库也很有用.您在Maven项目文件中声明这些内容,并从Internet上的存储库中检索它们(并在本地缓存,除非您另外设置).
所以我的建议是使用这两个中的一个.如果你来自C/C++背景,你可能会习惯Makefile,但它并不是真正的Java方式.就像我说的那样,你可能有理由在现有项目中使用make和Java,但对于任何新项目,你应该绝对使用Ant或Maven,我认为.