build.xml和build-impl.xml之间的区别

3
我正在学习一款使用Java编写的Web应用程序的代码,该应用程序已经构建并运行良好。在该项目中,我发现两个文件,build.xml和build-impl.xml,其中包含与可以对项目进行的操作相关的不同信息。我无法理解:
1)为什么需要两个不同的文件,build.xml和build-impl.xml?
2)以上两个文件中哪一个是强制性的?
3)谁在何时何地使用这些文件?
4)它们确切包含哪些信息?
5)它们是自动生成的还是必须手动创建?

1
通常情况下,build.xml 用于 Apache Ant,这是一个 Java 构建工具。在看到您的帖子之前,我不知道 build-impl.xml,我猜这是为了 NetBeans,所以您使用 NetBeans 进行开发吗? - kenshinji
是的,我使用NetBeans进行开发。 - Mangu Singh Rajpurohit
2个回答

5
为什么需要两个不同的文件,build.xml和build-impl.xml?
默认情况下,Apache Ant(一个Java库和命令行工具,其使命是驱动构建文件中描述的进程作为相互依赖的目标和扩展点。)使用build.xml作为构建文件的名称。
我们需要构建我们的应用程序,因为假设我们有几个类,如果有人想要下载它们,就不应该单独下载它们。因此,我们应该将我们的应用程序打包成一个jar文件(一个可启动的jar文件对于此目的非常好)。一旦您满意您的应用程序正常工作,您可以准备将应用程序部署到您的系统/IDE/环境之外。
而从设置NetBeans平台应用程序:-

build-impl.xml文件使您可以访问NetBeans平台基础设施,如其“run”目标。您永远不需要更改build-impl.xml文件。另一方面,build.xml文件是Ant脚本,您将在其中根据需要自定义应用程序的构建过程。


  1. 以上两个文件中哪一个是必需的?

它们都不是必需的。如果您有多个类文件(或资源),则应构建您的应用程序。此外,如果您想在环境之外部署您的应用程序,则需要构建jar文件。后者在任何NetBeans Java应用程序中默认存在。

  1. 谁在什么时候和如何使用这些文件?

已在上面回答。不要深入研究“何时”,它只是用于构建您的应用程序。当您使用Ant(命令行)手动构建应用程序时,您将知道何时使用!

  1. 它们包含什么确切的信息?

我已经提供了关于Ant和build的NetBeans教程链接。去访问一下。其中涵盖了build.xml和build-impl.xml中包含的信息。

  1. 它们是自动生成的还是必须手动创建?
不,你默认情况下已经有 build.xmlbuild-impl.xml(当使用NetBeans应用程序时自动生成)。而且,你永远不需要更改 build-impl.xml。

请您详细说明第4和第5个问题? - Mangu Singh Rajpurohit
你在第一点告诉我,ant 会生成 jar/war 文件,但是即使通过 ant 清理和构建项目,我仍然找不到任何生成的 war/jar 文件。 - Mangu Singh Rajpurohit
@user2393267 - 这是你的问题,你还没有构建一个jar文件。你应该按照我在上一条评论中提到的链接建议去做。 - Am_I_Helpful
但是,我仍然能够运行项目。没有创建jar文件也可能吗? - Mangu Singh Rajpurohit
1
@user2393267 - 你想问什么?你的项目尽管没有构建也可以运行,它有不同的用途。请重新查看我的答案。只是为了分发方便,人们选择使用jar文件。 - Am_I_Helpful
显示剩余2条评论

3
好的,这两个文件是Netbeans IDE用来根据项目偏好设置强制执行特定行为的。现在回答您的问题...
1)build.xml包含对build-impl.xml的引用。这用于使用build-impl.xml行为覆盖build.xml。如文件中所述,build.xml仅由“Clean and Build”命令使用。正如build.xml中所述的(如果删除它并重新打开项目,则会重新创建)。build.xml不是很重要。重要的文件是build-impl.xml。
2)build-impl.xml是必需的,因为它包括针对JVM、IDE调试器、编译器、ant部署工具等的指令...
3)build.xml仅由“Clean and Build”使用。如果该项目关闭了“Compile on Save”功能,那么Run、Debug和Test等命令仅使用此构建脚本。build-impl.xml由前面提到的组件使用。
4)上面已经回答了。
5)两者都是由IDE自动生成的。您可以编辑build.xml,但不能编辑build-impl.xml(您不必这样做,因为它是由IDE自动生成的)。
更新: 这两个文件的范围严格限于Netbeans IDE。要将项目部署到Netbeans之外,您只需要获取提取的jar包或war包(Web应用程序),并直接将其部署到容器中。
据我所知,Netbeans创建的项目与Eclipse创建的项目之间没有直接关系。

build-impl.xml 的范围是否仅限于 NetBeans?如果我在 NetBeans 环境之外部署项目,那么 build-impl.xml 是否有任何用处?此外,Eclipse 如何提供 NetBeans 通过 build-impl.xml 提供的功能? - Mangu Singh Rajpurohit
@user2393267,请看我的更新。 - MaVRoSCy
那么Eclipse不使用Ant构建工具吗?因为正如其他答案所建议的,Ant需要build.xml文件。如果Eclipse不使用Ant,那么它用什么来构建项目呢? - Mangu Singh Rajpurohit
谢谢,@Am_I_Helpful,但请回答我为你发布的问题。 - Mangu Singh Rajpurohit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接