代码之家  ›  专栏  ›  技术社区  ›  buttercup

Java使用哪种版本?

  •  2
  • buttercup  · 技术社区  · 15 年前

    我有make(Windows SDK)、nmake(Visual Studio)和make(codegear)

    我用哪种版本来编译Java应用程序? 我从哪里得到这个“牌子”? 我下载了JDK,但没有make。 我搜索了一些东西来编译一个Java MaX文件。

    如果你有一个Mag文件和一些*.java文件,你会用什么?

    4 回复  |  直到 15 年前
        1
  •  8
  •   cletus    15 年前

    Java项目 很少地 使用生成和生成文件。事实上,我只见过这一次在实践中使用,但这是13年前,早于Java构建工具。相反,Java项目使用两种主要的构建工具之一。

    基于你的问题,我假设你没有特别的理由使用make(因为你不想编译一个只有makefile的现有项目)。

    蚂蚁

    Ant 是一个基于XML的脚本构建工具,它在概念上与makefile有点(但不是很多)相似。一个Ant构建脚本将定义许多任务。这些任务将取决于其他任务。这些任务可以包括编译Java源文件、构建JAR和您真正喜欢的任何东西。

    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...
    

    现在有些人不喜欢这样,部分原因是有些人不喜欢别人告诉他们该做什么(imho),但也有一些原因,如遗留原因和其他因素。我个人认为这是一件好事,因为一旦你熟悉了任何Maven Web应用程序项目,你就可以转到任何其他Maven Web应用程序项目并找到解决方法。

    Maven还将为您提供许多要运行的标准命令,例如编译、测试、安装等。

    Maven对于依赖第三方库也很有用。您在Maven项目文件中声明这些,它们将从Internet上的存储库中检索(并在本地缓存,除非您另有设置)。

    所以我的建议是使用这两种方法中的一种。如果您来自C/C++背景,但它可能不是用来生成文件的,但它不是真正的Java方式。正如我所说的,您可能有理由使用Java,如现有的项目,但对于任何新项目,您应该绝对使用Ant或Maven代替,在我看来。

        2
  •  4
  •   Mark Peters    15 年前

    使用处理makefile的任何版本。make不做任何编译,它只是一个脚本系统,设计时考虑到了构建软件。它将委托Javac或其他东西来编译Java文件。

    我会在你的系统上尝试这三个。

        3
  •  3
  •   Stephen C    15 年前

    有两个答案。

    A1:如果您想使用makefile,您需要查看软件附带的构建文档,以确定要使用哪个版本的make。如果没有与您的平台相关的构建文档,请查看软件最初实现的平台的文档。多年来,有很多不同版本的make,每个版本都有自己的特色。

    您可能会遇到的另一个问题是makefile不可移植。在运行的规则中,通常存在各种平台依赖关系,例如命令名、命令路径等。如果您试图在不同的平台上构建,这些问题可能需要您对makefile进行黑客攻击。(在C/C++世界中,有一个迷宫式的GNU工具称为AutoCAD/AutoCONF,目的是为了解决这个问题。但听起来,你只有一个普通的文件。)

    总之,如果你想坚持make,按照构建文档所说的做,在没有任何相关的构建文档的情况下,尝试任何版本的make,看看会发生什么。如果存在与平台相关的问题,请准备学习“make ese”和hack makefiles。

    A2:imo,一个更好的替代方法是抛弃现有的makefile,使用ant或maven创建自己的构建文件。

        4
  •  1
  •   Rafe Kettler    15 年前

    如果您想要一个可执行JAR,不要使用makefile,只需按照以下命令提示操作:

    javac DiveLog.java
    jar cvfm yourjarname.jar manifest allyourcompiledclasses.class
    

    要从控制台运行jar,请键入:

    java -jar yourjarname.jar